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文档中的所有图片。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。