C#從PDF提取圖片的完整流程
引言
在實(shí)際開(kāi)發(fā)中,PDF 文件中常包含文本、表格和圖片。圖片可能是合同中的簽名、發(fā)票上的印章,或者報(bào)告、宣傳資料中的圖表。
本文將介紹如何使用 Spire.PDF for .NET 提取 PDF 中的圖片,并保存為獨(dú)立圖像文件,重點(diǎn)演示 PdfImageHelper 的用法。
1. 為什么需要提取 PDF 圖片?
- 保存原始圖像:方便后續(xù)處理或歸檔;
- 數(shù)據(jù)分析:圖表或圖片信息可以進(jìn)一步處理或識(shí)別;
- 文檔拆分:將 PDF 中的圖片單獨(dú)存儲(chǔ)或用于報(bào)告生成。
2. 準(zhǔn)備工作
- 安裝 Spire.PDF for .NET(支持 .NET Framework 和 .NET Core):
Install-Package Spire.PDF
- 引用命名空間:
using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System.IO;
3. 提取 PDF 圖片信息
PdfImageHelper 是 Spire.PDF 中用于處理 PDF 圖片的核心類,它可以:
- 獲取頁(yè)面上所有嵌入的圖片對(duì)象;
- 提供圖片的位置信息、大小、格式等;
- 將圖片提取為
System.Drawing.Image對(duì)象。
示例代碼如下:
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.IO;
class ExtractPdfImages
{
static void Main()
{
// 加載 PDF 文件
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Sample.pdf");
int imageIndex = 1;
// 遍歷每一頁(yè)
foreach (PdfPageBase page in pdf.Pages)
{
// 使用 PdfImageHelper 獲取頁(yè)面上的所有圖片信息
PdfImageInfo[] images = PdfImageHelper.GetImages(page);
foreach (PdfImageInfo info in images)
{
// 提取圖片對(duì)象
Image img = info.Image;
// 保存為獨(dú)立文件
string fileName = $"Image_{imageIndex}.png";
img.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine($"已提取圖片: {fileName}");
imageIndex++;
}
}
Console.WriteLine("PDF 圖片提取完成!");
}
}
4. 高級(jí)用法(可選)
- 獲取圖片位置和大小:通過(guò)
PdfImageInfo.Rect可以獲取圖片在頁(yè)面中的矩形區(qū)域; - 按頁(yè)面或區(qū)域過(guò)濾:只提取指定頁(yè)或特定區(qū)域的圖片;
- 支持多種格式:可保存為 PNG、JPEG、BMP 等。
例如,只提取第一頁(yè)的所有圖片:
PdfPageBase firstPage = pdf.Pages[0]; PdfImageInfo[] firstPageImages = PdfImageHelper.GetImages(firstPage);
5. 總結(jié)
本文介紹了在 C# 中使用 Spire.PDF for .NET 提取 PDF 圖片的完整流程:
- 加載 PDF 文件;
- 使用
PdfImageHelper獲取圖片信息; - 將圖片保存為獨(dú)立文件;
- 可選:獲取位置、大小或按區(qū)域提取。
通過(guò)這種方式,開(kāi)發(fā)者可以快速提取 PDF 中的所有圖片,應(yīng)用于報(bào)表處理、合同歸檔或數(shù)據(jù)分析場(chǎng)景。
到此這篇關(guān)于C#從PDF提取圖片的操作指南的文章就介紹到這了,更多相關(guān)C#從PDF提取圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)十六進(jìn)制與字符串轉(zhuǎn)換的技術(shù)解析
在嵌入式開(kāi)發(fā)、網(wǎng)絡(luò)通信、數(shù)據(jù)解析等場(chǎng)景中,十六進(jìn)制與字符串的相互轉(zhuǎn)換是 C# 開(kāi)發(fā)者最頻繁遇到的基礎(chǔ)操作之一,下面我們就來(lái)看看具體的實(shí)現(xiàn)方法吧2026-05-05
c#實(shí)現(xiàn)把異常寫(xiě)入日志示例(異常日志)
這篇文章主要介紹了c#實(shí)現(xiàn)把異常寫(xiě)入日志示例(異常日志),需要的朋友可以參考下2014-04-04
c# Rank屬性與GetUpperBound方法的深入分析
本篇文章是對(duì)c#中的Rank屬性與GetUpperBound方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
C#簡(jiǎn)單讀取主機(jī)上所有進(jìn)程的方法
這篇文章主要介紹了C#簡(jiǎn)單讀取主機(jī)上所有進(jìn)程的方法,涉及C#進(jìn)程的遍歷讀取操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-08-08

