无论是想在演示文稿中重复使用图片、存档重要的图像,还是提高 PDF 文档分析的便捷性,都涉及到从 PDF 中提取图片。使用 C# 进行 PDF 文档的图片提取可以很好地帮助开发人员更高效地管理资源并优化工作流程。
在本文中,您将学习如何使用 C# 和 Spire.PDF for .NET 从单个 PDF 页面或整个文档中提取图片。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
从指定的 PDF 页面提取图片
Spire.PDF for .NET 提供了 PdfImageHelper 类,专门用于管理 PDF 文档中的图片。该类支持多种操作,例如删除、替换和提取图片。
要获取指定 PDF 页面上的图片信息,开发人员可以使用 PdfImageHelper.GetImagesInfo(PdfPageBase page) 方法。获取图片信息后,再通过 PdfImageInfo.Image.Save() 方法将图片保存为文件。
提取指定 PDF 页面图片的具体步骤如下:
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载一个 PDF 文件。
- 通过 PdfDocument.Pages[index] 属性获取指定的 PDF 页面。
- 创建一个 PdfImageHelper 对象。
- 利用 PdfImageHelper.GetImagesInfo() 方法获取该页面上图片信息的集合。
- 遍历图片信息,然后通过 PdfImageInfo.Image.Save() 方法将每个实例保存为 PNG 文件。
- C#
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;
namespace ExtractImagesFromSpecificPage
{
class Program
{
static void Main(string[] args)
{
// 创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载一个 PDF 文档
doc.LoadFromFile("/示例文件.pdf");
// 获取指定的 PDF 页面
PdfPageBase page = doc.Pages[1];
// 创建一个 PdfImageHelper 对象
PdfImageHelper imageHelper = new PdfImageHelper();
// 获取该页上所有图片的信息
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);
// 遍历图片信息
for (int i = 0; i < imageInfos.Length; i++)
{
// 获取指定图片信息
PdfImageInfo imageInfo = imageInfos[i];
// 获取该图片
Image image = imageInfo.Image;
// 将图片保存为 PNG 格式
image.Save("/提取的图片/图片-" + i + ".png");
}
// 释放资源
doc.Dispose();
}
}
}
从整个 PDF 文档中提取所有图片
通过阅读上文,您已经了解了如何从特定页面提取图片。接下来,您可以遍历 PDF 文档的每一页,并提取其中的图片,从而收集整个文档中的所有图片。
从整个 PDF 文档中提取所有图片的具体步骤如下:
- 创建一个 PdfDocument 对象。
- 利用 PdfDocument.LoadFromFile() 方法加载一个 PDF 文件。
- 创建一个 PdfImageHelper 对象。
- 遍历 PDF 文件里的所有页面。
- 通过 PdfDocument.Pages[index] 属性获取当前页面。
- 通过 PdfImageHelper.GetImagesInfo() 方法获取该页上的图片信息集合。
- 遍历图片信息,然后通过 PdfImageInfo.Image.Save() 方法将每个实例保存为 PNG 文件。
- C#
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;
namespace ExtractAllImages
{
class Program
{
static void Main(string[] args)
{
// 创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载一个 PDF 文档
doc.LoadFromFile("/示例文件.pdf");
// 创建一个 PdfImageHelper 对象
PdfImageHelper imageHelper = new PdfImageHelper();
// 声明一个 int 变量
int m = 0;
// 遍历 PDF 中的所有页面
for (int i = 0; i<doc.Pages.Count; i++)
{
// 获取指定的页面
PdfPageBase page = doc.Pages[i];
// 获取该页上的所有图片信息
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);
// 遍历图片信息
for (int j = 0; j<imageInfos.Length; j++)
{
// 获取指定图片信息
PdfImageInfo imageInfo = imageInfos[j];
// 获取该图片
Image image = imageInfo.Image;
// 将图片保存为 PNG
image.Save("/提取的图片/全文图片-" + m + ".png");
m++;
}
}
// 释放资源
doc.Dispose();
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。