【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("西湖.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("西湖.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("西湖.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("西湖.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路径,仅供参考,文件路径可自定义为其他路径。
posted on 2022-06-16 10:00 Carina-baby 阅读(983) 评论(1) 编辑 收藏 举报