.NET 開發(fā)中如何通過 C# 提取 PDF 中的圖片
在.NET 開發(fā)中,從 PDF 里提取圖片是個高頻需求 —— 不管是數(shù)據(jù)遷移時需要剝離文檔中的圖表,還是內(nèi)容分析時要提取關(guān)鍵插圖,都繞不開這個場景。但傳統(tǒng)方案總有些麻煩:付費 PDF 庫成本高,還可能依賴 Adobe Acrobat 這類重型工具,對中小型項目不夠友好。
本文將介紹如何使用免費庫 Free Spire.PDF for .NET 精準(zhǔn)實現(xiàn)“整文檔批量提取”或“指定頁面精準(zhǔn)提取”,代碼簡單、操作高效。
一、前期準(zhǔn)備:快速引入工具庫
使用 Free Spire.PDF 前,需先完成庫引用,推薦通過 NuGet 安裝(步驟極簡,3步即可完成):
- 打開Visual Studio,右鍵項目選擇“管理NuGet程序包”;
- 在“瀏覽”欄搜索“Free Spire.PDF”,找到官方包后點擊“安裝”;
- 等待安裝完成,項目會自動添加引用,無需手動配置路徑。
?? 注意:免費版對單文檔頁數(shù)有一定限制。
二、核心邏輯與場景實現(xiàn)
Free Spire.PDF 提取圖片的核心邏輯很清晰:通過 PdfImageHelper 類的 GetImagesInfo() 方法獲取頁面圖片信息,再調(diào)用 PdfImageInfo.Image.Save() 保存圖片。以下針對兩種典型場景,提供可直接復(fù)用的代碼。
場景1:提取 PDF 文檔中所有圖片
適用于需要批量獲取文檔中所有圖片的場景(例如歸檔文檔內(nèi)所有插圖等)。實現(xiàn)邏輯為“加載文檔→遍歷所有頁面→提取并按序保存圖片”。
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;
namespace ExtractAllImages
{
class Program
{
static void Main(string[] args)
{
// 1. 加載目標(biāo)PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Input.pdf"); // 替換為你的PDF路徑
// 2. 初始化圖片處理工具
PdfImageHelper imageHelper = new PdfImageHelper();
// 3. 遍歷所有頁面,提取圖片
int imageCount = 0; // 用于給圖片命名,避免重復(fù)
for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
{
// 獲取當(dāng)前頁對象
PdfPageBase currentPage = pdf.Pages[pageIndex];
// 獲取當(dāng)前頁所有圖片信息
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(currentPage);
// 保存當(dāng)前頁的圖片
foreach (var imageInfo in imageInfos)
{
Image image = imageInfo.Image;
// 保存路徑可自定義
image.Save($"Output\\image_{imageCount}.png");
imageCount++;
}
}
// 4. 釋放資源
pdf.Dispose();
}
}
}場景2:提取 PDF 指定頁面的圖片
適用于僅需某幾頁圖片的場景(例如從多頁報告中提取封面圖、從論文中提取某頁的圖表等)。核心是“定位目標(biāo)頁面→單獨提取該頁圖片”。
?? 關(guān)鍵提醒:Free Spire.PDF 的頁面索引從0開始(第1頁對應(yīng)索引0,第2頁對應(yīng)索引1,以此類推)。
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;
namespace ExtractImagesFromSpecificPage
{
class Program
{
static void Main(string[] args)
{
// 1. 加載目標(biāo)PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Input.pdf"); // 替換為你的PDF路徑
// 2. 定位指定頁面(此處以第1頁為例,索引為0)
int targetPageIndex = 0; // 如需提取第3頁,改為2即可
PdfPageBase targetPage = pdf.Pages[targetPageIndex];
// 3. 初始化圖片處理工具并獲取圖片信息
PdfImageHelper imageHelper = new PdfImageHelper();
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(targetPage);
// 4. 保存指定頁的圖片
for (int i = 0; i < imageInfos.Length; i++)
{
Image image = imageInfos[i].Image;
// 保存路徑可自定義
image.Save($"Output\\page_{targetPageIndex + 1}_image_{i}.png");
}
// 5. 釋放資源
pdf.Dispose();
}
}
}三、方案優(yōu)勢與注意事項
- 靈活可控:支持自定義圖片保存路徑(如
Output\\)和格式(如PNG、JPG等); - 高效批量處理:通過循環(huán)邏輯可快速處理多頁 PDF,無需手動逐頁操作;
- 輕量無依賴:無需安裝 Adobe Acrobat 等第三方軟件,僅需引用一個類庫即可運行。
總結(jié)
用 Free Spire.PDF for .NET 提取PDF圖片,無需編寫復(fù)雜解析算法,也不用依賴重型工具,幾行代碼即可實現(xiàn)精準(zhǔn)提取。無論是整文檔批量處理,還是指定頁面定向提取,都能輕松應(yīng)對。
到此這篇關(guān)于 .NET 開發(fā)中如何通過 C# 提取 PDF 中的圖片的文章就介紹到這了,更多相關(guān)C# 提取 PDF圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何:對Windows 窗體控件進(jìn)行線程安全調(diào)用
使用多線程提高 Windows 窗體應(yīng)用程序的性能時,必須注意以線程安全方式調(diào)用控件。2007-03-03
C#中String和StringBuilder的簡介與區(qū)別
今天小編就為大家分享一篇關(guān)于C#中String和StringBuilder的簡介與區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
C#統(tǒng)計字符串中數(shù)字個數(shù)的方法
這篇文章主要介紹了C#統(tǒng)計字符串中數(shù)字個數(shù)的方法,涉及C#遍歷字符串并判斷數(shù)字的技巧,需要的朋友可以參考下2015-06-06
c#開發(fā)的程序安裝時動態(tài)指定windows服務(wù)名稱
前段時間由于項目的需求,要在Windows里把同樣的組件制作成多個不同名稱的服務(wù),這些服務(wù)完成類似的功能,僅需要修改業(yè)務(wù)配置文件2012-06-06
C#代碼實現(xiàn)在Excel中隱藏或顯示網(wǎng)格線
網(wǎng)格線是?Excel?工作表中用于區(qū)分單元格的淺色線條,本文將介紹如何使用 Spire.XLS for .NET 通過代碼的方式顯示、隱藏或移除 Excel 工作表中的網(wǎng)格線,感興趣的小伙伴可以了解下2026-01-01

