【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它在放大或者改变尺寸的情况下其图形质量不会有所损失,且与 JPG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。本文将介绍如何实现将PDF文档与SVG/Image相互转换的方法。经过综合对比之后,最后筛选出这一方法。此方法操作起来比较方便且代码量较少。下面是我整理的详细步骤及C#/VB.NET代码供大家参考。

**类库引入及代码思路:**本次功能测试中,使用到的是​ ​ Free Spire.PDF for .NET​​。Spire.PDF.dll文件的引入方法如下:方法1:将 Free Spire.PDF for .NET 下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的Spire.PDF.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。方法2:通过 ​ ​NuGet​​ 安装。可通过以下2种方法安装:(1)可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.PDF”,点击“安装”。等待程序安装完成。(2)将以下内容复制到PM控制台安装。Install-Package FreeSpire.PDF -Version 8.2.0

将PDF转为SVG格式

具体步骤:

  • 创建 PdfDocument 类的对象。
  • 调用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
  • 通过 PdfDocument.SaveToFile() 方法保存为 SVG 格式。

完整代码:

【C#】

using System;
using Spire.Pdf;namespace PdfToSVG
{class Program{static void Main(string[] args){//新建并加载PDF文档PdfDocument doc = new PdfDocument();doc.LoadFromFile("Sample.pdf");//保存为SVG格式doc.SaveToFile("ToSVG-result.svg", FileFormat.SVG);doc.Close();}}
}

【VB.NET】

Imports System
Imports Spire.PdfNamespace PdfToSVGClass ProgramPrivate Shared Sub Main(ByVal args() As String)'新建并加载PDF文档Dim doc As PdfDocument = New PdfDocumentdoc.LoadFromFile("Sample.pdf")'保存为SVG格式doc.SaveToFile("ToSVG-result.svg", FileFormat.SVG)doc.CloseEnd SubEnd Class
End Namespace

效果图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RE7FnCwX-1655355097026)(https://img2022.cnblogs.com/blog/2859233/202206/2859233-20220616093937809-970468124.png)]

将SVG转为PDF格式

具体步骤:

  • 创建一个 PdfDocument 对象。
  • 用PdfDocument.LoadFromSvg()方法加载SVG文档
  • 用PdfDocument.SaveToFile()方法保存为PDF文档

完整代码:

【C#】

using Spire.Pdf;
using System;namespace SVGToPdf
{class Program{static void Main(string[] args){//创建一个 PdfDocument 对象.PdfDocument doc = new PdfDocument();//加载文档.doc.LoadFromSvg("ToSVG-result.svg");//保存文档.String result = "SVgToPDF\_out.pdf";doc.SaveToFile(result);}}
}

【VB.NET】

Imports Spire.Pdf
Imports SystemNamespace SVGToPdfClass ProgramPrivate Shared Sub Main(ByVal args() As String)'创建一个 PdfDocument 对象.Dim doc As PdfDocument = New PdfDocument'加载文档.doc.LoadFromSvg("ToSVG-result.svg")'保存文档Dim result As String = "SVgToPDF\_out.pdf"doc.SaveToFile(result)End SubEnd Class
End Namespace

效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zh3d1UUe-1655355097030)(https://img2022.cnblogs.com/blog/2859233/202206/2859233-20220616094234762-389225572.png)]

将PDF转为图像

具体步骤:

  • 添加PDF文件
  • 用PdfDocument.LoadFromFile()方法加载PDF文件
  • 用Image.Save()方法保存为图片

完整代码:

【C#】

using System;
using System.Drawing;
using Spire.Pdf;namespace ToImage
{class Program{static void Main(string[] args){//新建并加载PDF文档PdfDocument doc = new PdfDocument();doc.LoadFromFile("Sample1.pdf");//保存为图片for (int i = 0; i < doc.Pages.Count; i++){String fileName = String.Format("ToImage-img-{0}.png", i);using (Image image = doc.SaveAsImage(i, 300, 300)){image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png); }}doc.Close();}}
}

【VB.NET】

Imports System
Imports System.Drawing
Imports Spire.PdfNamespace ToImageClass ProgramPrivate Shared Sub Main(ByVal args() As String)'新建并加载PDF文档Dim doc As PdfDocument = New PdfDocumentdoc.LoadFromFile("Sample1.pdf")'保存为图片Dim i As Integer = 0Do While (i < doc.Pages.Count)Dim fileName As String = String.Format("ToImage-img-{0}.png", i)Dim image As Image = doc.SaveAsImage(i, 300, 300)image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png)i = (i + 1)Loopdoc.CloseEnd SubEnd Class
End Namespace

效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ZNDZRhQ-1655355097031)(https://img2022.cnblogs.com/blog/2859233/202206/2859233-20220616095013266-1072419986.png)]

将图像转为PDF格式

具体步骤:

  • 创建一个添加了section和页面的 pdf 文档。
  • 用PdfImage.FromFile()方法加载图片
  • 在 PDF 中设置图像的显示位置和大小
  • 通过PdfImage.PhysicalDimension属性获取图片大小
  • 使用 PdfPage.Canvas.DrawImage() 方法在第一页 (0, 30) 处绘制 PdfImage 对象
  • 使用 PdfDocument.SaveToFile() 方法将文档保存为 PDF 文件

完整代码:

C#

using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;namespace ImageToPdf
{class Program{static void Main(string[] args){//创建一个添加了section和页面的 pdf 文档.PdfDocument pdf = new PdfDocument();PdfSection section = pdf.Sections.Add();PdfPageBase page = pdf.Pages.Add();//加载图片PdfImage image = PdfImage.FromFile("image5.png");//在 PDF 中设置图像的显示位置和大小//调整图片大小以适合页面宽度float widthFitRate = image.PhysicalDimension.Width / page.Canvas.ClientSize.Width;float heightFitRate = image.PhysicalDimension.Height / page.Canvas.ClientSize.Height;float fitRate = Math.Max(widthFitRate, heightFitRate);//获取图片大小 float fitWidth = image.PhysicalDimension.Width / fitRate;float fitHeight = image.PhysicalDimension.Height / fitRate;//绘图page.Canvas.DrawImage(image, 0, 30, fitWidth, fitHeight);string output = "image.pdf";pdf.SaveToFile(output);}}
}

【VB.NET】

Imports System
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.GraphicsNamespace ImageToPdfClass ProgramPrivate Shared Sub Main(ByVal args() As String)' 创建一个添加了section和页面的 pdf 文档.Dim pdf As PdfDocument = New PdfDocumentDim section As PdfSection = pdf.Sections.AddDim page As PdfPageBase = pdf.Pages.Add'加载图片Dim image As PdfImage = PdfImage.FromFile("image5.png")'在 PDF 中设置图像的显示位置和大小'调整图片大小以适合页面宽度Dim widthFitRate As Single = (image.PhysicalDimension.Width / page.Canvas.ClientSize.Width)Dim heightFitRate As Single = (image.PhysicalDimension.Height / page.Canvas.ClientSize.Height)Dim fitRate As Single = Math.Max(widthFitRate, heightFitRate)' 获取图片大小Dim fitWidth As Single = (image.PhysicalDimension.Width / fitRate)Dim fitHeight As Single = (image.PhysicalDimension.Height / fitRate)'绘图page.Canvas.DrawImage(image, 0, 30, fitWidth, fitHeight)Dim output As String = "image.pdf"pdf.SaveToFile(output)End SubEnd Class
End Namespace

效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kVwhqf5-1655355097032)(https://img2022.cnblogs.com/blog/2859233/202206/2859233-20220616095305046-2077878358.png)]

**注意:**测试代码中的文件路径为程序Debug路径,仅供参考,文件路径可自定义为其他路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hiho模拟面试题2 补提交卡 (贪心,枚举)

题目&#xff1a; 时间限制:2000ms单点时限:1000ms内存限制:256MB描写叙述 小Ho给自己定了一个雄伟的目标&#xff1a;连续100天每天坚持在hihoCoder上提交一个程序。100天过去了。小Ho查看自己的提交记录发现有N天由于贪玩忘记提交了。于是小Ho软磨硬泡、强忍着小Hi歧视的眼神…

libcurl上传文件

libcurl参数很多&#xff0c;一不小心就容易遇到问题。曾经就遇到过一个很蛋疼的问题&#xff1a;libcurl断点下载>> 这里主要汇总一下&#xff0c;libcurl上传的二种方式&#xff1a; 1、直接上传文件&#xff0c;类似form表单<input type”file” />&#xff0c;…

MSP430F5529 DriverLib 库函数学习笔记(二)GPIO

目录硬知识一、MSP430单片机端口概述二、通用IO端口输出特性三、端口P1和P21&#xff0e;输入寄存器PxIN2&#xff0e;输出寄存器PxOUT3&#xff0e;方向寄存器PxDIR4&#xff0e;上拉/下拉电阻使能寄存器PxREN5&#xff0e;输出驱动能力调节寄存器PxDS6&#xff0e;功能选择寄…

IOS项目中加入Google Admob SDK

错误1. Undefined symbols for architecture i386: "_OBJC_CLASS_$_ASIdentifierManager", referenced from: objc-class-ref in libGoogleAdMobAds.a(GADIdentifierUtilities.o) "_OBJC_CLASS_$_SKStoreProductViewController", referenced from: …

【RocketMQ】MQ消息发送

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(三)认识中断

目录一、硬知识中断的基本概念MSP430单片机中断源中断响应过程中断返回过程中断嵌套二、msp430f5529.h中所列的中断向量宏定义平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 一、硬知识 中断的基本概念 中断…

推荐系统相关算法

摘要&#xff1a; 热门推荐 协同过滤算法 矩阵分解 基于内容的推荐&#xff08;文本&#xff0c;标签&#xff0c;特征/profile&#xff09; 基于图的算法 内容&#xff1a; 热门推荐&#xff1a; 热门推荐本质上是一个排行榜&#xff0c;可能会考虑到时间衰减&#xff0c;商品…

冒泡排序的简单理解

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

微软职位内部推荐-Software Engineer II

微软近期Open的职位:Job Title: Software Engineer IIWork Location: Suzhou/Beijing, ChinaJob Description:Are you looking for a big challenge? Do you know why Big Data is the next frontier for innovation, competition and productivity? Come join us to build i…

司机和售票员问题 信号signal注册一例

#include <stdio.h> #include <stdlib.h> #include <signal.h>pid_t pid;void driver_handler(int signo) //司机的信号处理函数 {if (signo SIGUSR1)printf("Lets go!\n");if (signo SIGUSR2)printf("Stop the bus!\n");if (signo …

MSP430F5529 DriverLib 库函数学习笔记(四)UART通信

目录硬知识USCI通信模块USCI的UART模式1. USCI初始化和复位2. 异步通信字符格式3. 异步多机通信模式4. 自动波特率检测5. IrDA编码和解码6. 自动错误检测7. USCI接收使能8. USCI发送使能9. UART波特率的产生10. UART波特率的设置&#xff08;重要&#xff09;&#xff08;1&…

linux下编译安装MySQL5.6新版本

MySQL 5.5以上版本 与之前的版本安装出入有些区别&#xff1a; 下面是安装过程mysql5.6 下载地址&#xff1a;ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.6/一&#xff1a;卸载旧版本使用下面的命令检查是否安装有MySQL Serverrpm -qa | grep mysql有的话通过下面…

MSP430F5529 DriverLib 库函数学习笔记(四点五)printf打印输出

目录代码实现使相应工程支持打印浮点数实验结果平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP)代码实现 重定向fputc(int ch, FILE *f)直接使用printf的方法只有字符串和%s打印正常&#xff0c;数字打印不出来…

Android学习第三天--事件监听器

事件监听器方式一&#xff1a; 匿名内部类&#xff0c;直接在组件上添加监听器&#xff1b;例子如下 button.setOnclickListener(new OnClickListener() {System.out.println("hahahh"); }); 监听方式二&#xff1a; 实现某个监听器的接口&#xff0c;然后在添加…

FileOutputSteam入门

FileOutputSteam 字节输入流 从控制台将字节保存到本地硬盘 package com.isoftstone.io; import java.io.FileOutputStream; import java.io.IOException; public class TestFileOutStream {public static void main(String[] args){FileOutputStream fos null;try{//1、创建文…

认识弹性盒子flex

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Objective-C 语法

吧Category使用场景&#xff1a; -类包含了很多个方法的实现&#xff0c;而这些方法需要不同的团队成员来实现。 -当你在使用基础类库中的类时&#xff0c;不想集成这些类&#xff0c;只想添加一些方法时。 -Category能访问原始类的实例变量&#xff0c;但是不能添加实例变量&a…

flag

mark, to remember

MSP430F5529 DriverLib 库函数学习笔记(五)定时器A

目录硬知识定时器A 16位定时器原理&#xff08;1&#xff09;时钟源选择和分频器&#xff08;2&#xff09;Timer_A工作模式&#xff08;3&#xff09;捕获/比较模块&#xff08;4&#xff09;Timer_A中断&#xff08;重要&#xff09;定时器A API (机翻)定时器A配置和控制的函…

vim 常用快捷键(整理版)

最常用&#xff1a; x 删除后面的字符 X 删除前一个字符 删除3个字符就是3x dd:删除一行 D 删除到行尾 J:删除换行符&#xff0c;使下一行并上来。 nJ:连接后面的n行 u:撤销上一次操作 U:撤销当前行的所有修改 ctrlr:对撤消的撤消 I 在行首插入 a 在光标后插入 A…