前言
PDF的實際應用雖然廣泛,但考慮到接收設備不一定有支持的閲讀器, 將PDF導出為圖片格式可能會更方便發送和查閲。另外,圖片格式也更易於我們進行二次編輯。下面我所要介紹的這個將PDF轉換為圖像的方法可以確保轉換後的圖片與原始PDF文件的外觀一致,包括內容的位置和樣式等。只需要簡單幾行代碼就可以將PDF快速導出成你想要的圖片格式。
準備工作
這個方法將用到的是Free Spire.PDF for .NET組件,支持在多種.NET應用程序中處理PDF。
具體安裝方法如下(Visual Studio 2022為例):
方法一
通過NuGet安裝Free Spire.PDF for .NET。
1.打開 Visual Studio創建新項目。
2.依次選擇工具>NuGet包管理器>程序包管理器控制枱。
3.執行命令:PM> Install-Package FreeSpire.PDF
方法二
在程序中手動導入Spire.pdf.dll文件。
1.將Free Spire.PDF for .NET 下載到本地,解壓並安裝。
2.打開 Visual Studio創建一個新項目。
3.在“解決方案資源管理器”中右鍵點擊“引用”,再依次選擇“添加引用”> “瀏覽”。
4.找到安裝路徑下BIN文件夾中的dll文件,點擊“OK”。
這裏個人更推薦第二種方法,更方便查找各種demo。
還有一點需要注意的是,這個免費的組件在轉換時有一定頁數的限制。如果你的文檔比較大,也可以直接下載商業版,申請一個臨時許可證來試用一段時間。
下載鏈接:Spire.PDF for .NET
PDF文檔轉圖片
代碼邏輯
整個代碼的邏輯很簡單,首先導入所需要的外部庫和命名空間。然後創建一個文檔實例並加載需要轉換的PDF文檔。然後循環遍歷文檔的每一頁,調用PdfDocument下的SaveAsImage()方法將每一頁都轉換為圖片。圖片格式根據自身需要指定即可。
示例代碼
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDFtoImage
{
class Program
{
static void Main(string[] args)
{
//創建一個PdfDocument實例
PdfDocument pdf = new PdfDocument();
//加載需要轉換的PDF文檔
pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.pdf");
//循環遍歷每個頁面
for (int i = 0; i < pdf.Pages.Count; i++)
{
//將所有頁面轉換為圖像並設置圖像Dpi
Image image = pdf.SaveAsImage(i, PdfImageType.Bitmap, 500, 500);
//設置圖像格式
String file = String.Format("C:\\Users\\Administrator\\Desktop\\Images\\Image-{0}.png", i);
image.Save(file, ImageFormat.Png);
}
}
}
}
效果圖
PDF的某一頁轉圖片
代碼邏輯
與上述代碼類似,只是轉換某一頁時,不再需要遍歷整個文檔,只需要通過索引獲取頁面就可以。唯一需要注意的是,這裏的索引是從0開始計算的。最後指定圖片格式即可。
示例代碼
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDFtoImage
{
class Program
{
static void Main(string[] args)
{
//創建一個PdfDocument實例
PdfDocument pdf = new PdfDocument();
//加載需要轉換的PDF文檔
pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.pdf");
//將第一頁轉換為圖像並設置圖像Dpi
Image image = pdf.SaveAsImage(0, PdfImageType.Bitmap, 500, 500);
//設置圖像格式
image.Save("C:\\Users\\Administrator\\Desktop\\Images\\Image.png ", ImageFormat.Png);
}
}
}
效果圖
其他
以上代碼演示的是將PDF轉換為PNG格式,如果想要轉換為其他圖片格式的話,如JPG,BMP或者EMF等,只需在更改代碼最後的格式即可。例如:
image.Save("Image.jpg", ImageFormat.Jpeg);