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
具體步驟:
完整程式碼:
【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
效果圖:
具體步驟:
完整程式碼:
【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
效果圖:
具體步驟:
完整程式碼:
【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
效果圖:
具體步驟:
完整程式碼:
【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路徑,僅供參考,檔案路徑可自定義為其他路徑。