【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路徑,僅供參考,文件路徑可自定義為其他路徑。