在实际开发中,PDF 文件中常包含文本、表格和图片。图片可能是合同中的签名、发票上的印章,或者报告、宣传资料中的图表。
本文将介绍如何使用 Spire.PDF for .NET 提取 PDF 中的图片,并保存为独立图像文件,重点演示 PdfImageHelper
的用法。
1. 为什么需要提取 PDF 图片?
- 保存原始图像:方便后续处理或归档;
- 数据分析:图表或图片信息可以进一步处理或识别;
- 文档拆分:将 PDF 中的图片单独存储或用于报告生成。
2. 准备工作
- 安装 Spire.PDF for .NET(支持 .NET Framework 和 .NET Core):
powershell
Install-Package Spire.PDF
- 引用命名空间:
C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System.IO;
3. 提取 PDF 图片信息
PdfImageHelper
是 Spire.PDF 中用于处理 PDF 图片的核心类,它可以:
- 获取页面上所有嵌入的图片对象;
- 提供图片的位置信息、大小、格式等;
- 将图片提取为
System.Drawing.Image
对象。
示例代码如下:
C#
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;
// 遍历每一页
foreach (PdfPageBase page in pdf.Pages)
{
// 使用 PdfImageHelper 获取页面上的所有图片信息
PdfImageInfo[] images = PdfImageHelper.GetImages(page);
foreach (PdfImageInfo info in images)
{
// 提取图片对象
Image img = info.Image;
// 保存为独立文件
string fileName = $"Image_{imageIndex}.png";
img.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine($"已提取图片: {fileName}");
imageIndex++;
}
}
Console.WriteLine("PDF 图片提取完成!");
}
}
4. 高级用法(可选)
- 获取图片位置和大小 :通过
PdfImageInfo.Rect
可以获取图片在页面中的矩形区域; - 按页面或区域过滤:只提取指定页或特定区域的图片;
- 支持多种格式:可保存为 PNG、JPEG、BMP 等。
例如,只提取第一页的所有图片:
C#
PdfPageBase firstPage = pdf.Pages[0];
PdfImageInfo[] firstPageImages = PdfImageHelper.GetImages(firstPage);
5. 总结
本文介绍了在 C# 中使用 Spire.PDF for .NET 提取 PDF 图片的完整流程:
- 加载 PDF 文件;
- 使用
PdfImageHelper
获取图片信息; - 将图片保存为独立文件;
- 可选:获取位置、大小或按区域提取。
通过这种方式,开发者可以快速提取 PDF 中的所有图片,应用于报表处理、合同归档或数据分析场景。