PDF文檔因其跨平台穩定性和格式保真度成為信息交換的核心載體。然而,PDF文件作為容器格式的封閉特性,使得其內部資源的有效提取成為技術挑戰。尤其是對嵌入式圖像這類非結構化數據的獲取需求日益凸顯。通過編程手段實現自動化提取不僅能突破傳統手動截圖的效率瓶頸,更能滿足數據歸檔、多媒體資源庫構建、文檔智能解析等場景的深層需求。本文將介紹如何在.NET平台使用C#提取PDF文檔中的圖片,為PDF圖片的再利用提供便捷方案。
本文所使用的方法需要用到免費的Free Spire.PDF for .NET,NuGet:PM> Install-Package FreeSpire.PDF。
用C#提取PDF文檔中的所有圖片
我們可以使用庫中的PdfImageHelper類來處理PDF文檔圖片的提取任務。首先需要使用PdfImageHelper.GetImagesInfo(PdfPageBase)方法來獲取PDF頁面的圖片信息為PdfImageInfo集合,然後使用PdfImageInfo.Image.Save()方法,將圖片保存到指定位置,從而完成圖片提取。
以下是操作步驟:
- 創建
PdfDocument對象,使用PdfDocument.LoadFromFile()載入PDF文檔。 - 創建
PdfImageHelper對象,用於獲取圖片信息。 - 遍歷文檔中的頁面,使用
PdfDocument.Pages[]屬性獲取當前頁面。 - 使用
PdfImageHelper.GetImagesInfo()方法獲取當前頁面的圖片信息為PdfImageInfo集合。 - 使用
PdfImageInfo.Image.Save()將圖片保存到指定位置。 - 釋放資源。
代碼示例
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;
namespace AddImageToPDF
{
class Program
{
static void Main(string[] args)
{
// 創建PdfDocument實例
PdfDocument pdf = new PdfDocument();
// 載入PDF文檔
pdf.LoadFromFile("Sample.pdf");
// 創建PdfImageHelper對象
PdfImageHelper imageHelper = new PdfImageHelper();
// 遍歷PDF文檔中的頁面
for (int i = 0; i < pdf.Pages.Count; i++)
{
// 獲取當前頁面
PdfPageBase page = pdf.Pages[i];
// 獲取當前頁面的圖片信息
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);
// 遍歷頁面中的圖片
for (int j = 0; j < imageInfos.Length; j++)
{
// 保存當前圖片
imageInfos[j].Image.Save($"Images/Page{i + 1}-Image{j + 1}.png");
}
}
// 釋放資源
pdf.Dispose();
}
}
}
提取結果
本文演示瞭如何在.NET平台使用C#提取PDF文檔中的所有圖片。