【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF
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.Pdf Namespace PdfToSVG Class Program Private Shared Sub Main(ByVal args() As String)
'新建并加载PDF文档
Dim doc As PdfDocument = New PdfDocument
doc.LoadFromFile("Sample.pdf")
'保存为SVG格式
doc.SaveToFile("ToSVG-result.svg", FileFormat.SVG)
doc.Close
End Sub
End Class
End Namespace
效果图:

将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 System Namespace SVGToPdf Class Program Private 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 Sub
End Class
End Namespace
效果图:

将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.Pdf Namespace ToImage Class Program Private Shared Sub Main(ByVal args() As String)
'新建并加载PDF文档
Dim doc As PdfDocument = New PdfDocument
doc.LoadFromFile("Sample1.pdf")
'保存为图片
Dim i As Integer = 0
Do 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)
Loop doc.Close
End Sub
End Class
End Namespace
效果图:

将图像转为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.Graphics Namespace ImageToPdf Class Program Private Shared Sub Main(ByVal args() As String)
' 创建一个添加了section和页面的 pdf 文档.
Dim pdf As PdfDocument = New PdfDocument
Dim section As PdfSection = pdf.Sections.Add
Dim 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 Sub
End Class
End Namespace
效果图:

注意:测试代码中的文件路径为程序Debug路径,仅供参考,文件路径可自定义为其他路径。
【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF的更多相关文章
- C# 将PDF转为SVG的3种情况
		PDF格式的文档广泛用于各种办公场所,在工作中难免会有将PDF文档转换为其他文档格式的需要.在本篇文档中,将介绍PDF转为SVG的方法.根据不同的转换需求,这里分三种情况进行讲述,即转PDF所有页为S ... 
- Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML
		同一文档在不同的编译或阅读环境中,需要使用特定的文档格式来打开,通常需要通过转换文档格式的方式来实现.下面将介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF.图片png.sv ... 
- Java 将PDF 转为Word、图片、SVG、XPS、Html、PDF/A
		本文将介绍通过Java编程来实现PDF文档转换的方法.包括: 1. PDF转为Word 2. PDF转为图片 3. PDF转为Html 4. PDF转为SVG 4.1 将PDF每一页转为单个的SVG ... 
- Java 将PDF/XPS转为Word/html /SVG/PS/PCL/PNG、PDF和XPS互转(基于Spire.Cloud.SDK for Java)
		Spire.Cloud.SDK for Java提供了接口PdfConvertApi通过convert()方法将PDF文档以及XPS文档转为指定文档格式,如转PDF为Word(支持Docx.Doc). ... 
- C#/VB.NET 将PDF转为OFD
		OFD,全称Open Fixed-layout Document ,是一种可存储.读取以及编辑的国家标准版式的电子文档格式,属于中国的一种自主文件格式,在安全性上有可靠保证.为突破国外技术在我们软硬件 ... 
- C#/VB.NET 将彩色PDF转为灰度PDF
		本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即 将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.ToGrayPdf()方法转为文档页面为灰 ... 
- C#/VB.NET 将PDF转为Excel
		PDF文档可以避免可防⽌他⼈⽆意中触到键盘修改⽂件内容.但是在避免他人⽆意修改的同时也妨碍了正常的修改.如果你想处理或修改PDF文档中的数据,不妨试试用Excel来实现.Excel拥有强大的数据处理功 ... 
- C#/VB.NET 将PDF转为PDF/X-1a:2001
		PDF/X-1a是一种PDF文件规范标准,在制作.使用PDF以及印刷时所需要遵循的技术条件,属于PDF/X-1标准下的一个子标准. PDF/X-1标准有由CGATS于1999年制定的PDF/X-1:1 ... 
- C# 如何将PDF转为多种图像文件格式(Png/Bmp/Emf/Tiff)
		PDF是一种在我们日常工作学习中最常用到的文档格式之一,但常常也会因为文档的不易编辑的特点,在遇到需要编辑PDF文档内容或者转换文件格式的情况时让人苦恼.通常对于开发者而言,可选择通过使用组件的方式来 ... 
随机推荐
- 如何使用Android可视化埋点
			Android可视化埋点是Android全埋点的增强.开发者可以将App界面同步至DTM界面,并在DTM界面通过可视化点击的方式添加埋点事件.目前Android可视化埋点包含两种埋点方式:普通可视化埋 ... 
- C++ functional库中的仿函数
			一.仿函数简介 仿函数(functor)又称之为函数对象(function object),实际上就是 重载了()操作符 的 struct或class. 由于重载了()操作符,所以使用他的时候就像在调 ... 
- Java 虚拟机学习记录
			参考资料 JVM高级特性与最佳实践-周志明 HotSpot 虚拟机垃圾回收调优指导 JVM 标准(Java SE 8) JSR 133 Java平台内存模型与线程修订版 命令行工具 JDK Vs JR ... 
- Unity-动画状态机使用细节记录
			Unity动画控制器Animator功能非常强大,总结一些具体使用细节,在动作游戏中很实用: 1.动画烘焙 不同动画之间,可能存在角色朝向,重心高度不一致: 可以在动画Eidt界面设置RootTran ... 
- Nuxt 的介绍与安装
			Nuxt.js(一.介绍与安装) 1.为什么使用Nuxt 渐进式Vue.js框架给前后端分离带来无限的乐趣,越来越多的程序员选择Vue.在我们使用Vue框架的过程中不免会出现以下的一些问题: 如何更好 ... 
- Vue 中 axios 跨域配置  (!!!配置完成需要重新运行,不然也不起作用)
			当拿到一个网址如:https://music.163.com/store/api/categorypage/list 获取数据是出现如下: 证明该网址不能非常直观的拿到数据.接下来我们试试跨域拿这个 ... 
- Edu CF 103 Div. 2 (A. K-divisible Sum, B. Inflation贪心),被黑客攻了,,惨掉rank, 思维除法与取余, 不太擅长的类型
			2021-01-29 题目链接: Educational Codeforces Round 103 (Rated for Div. 2) 题目 A. K-divisible Sum You are g ... 
- 条件表达式和switch语句
			一,条件表达式相当于(相当于if-else) 1.条件表达式 ? : 由条件运算符组成条件表达式的一般情况为: 表达式1?表达式2:表达式3: 求值规则:如果表达式的值为真,则以表达式2的值作为条件的 ... 
- Mybatis Plus之内置Mapper实践
			MyBatis Plus,作为对MyBatis的进一步增强,大大简化了我们的开发流程,提高了开发速度 配置 由于Mybatis Plus是建立在Mybatis之上的,所以其已经依赖了Mybatis,故 ... 
- [RPC学习]Dubbo+nacos实现动态更新内存RTree
			1.背景 服务架构一般都是从 单体架构 -> 微服务架构 -> 分布式架构 的迭代,我上一家公司就是在业务发展到一定规模时,开始拆老的单体服务,按业务维度拆成多个微服务,服务之间用的是HT ... 
