从 PDF 中提取图片是许多用户都会遇到的常见需求,例如将图片重新用于演示文稿、归档重要图像,或便于后续分析。掌握使用 C# 提取 PDF 图片的方法,可以帮助开发者更高效地管理资源,并简化日常工作流程。
本文将介绍如何使用 C# 从 PDF 的单个页面以及整个 PDF 文档中提取图片,并以 .NET PDF 处理库作为实现工具。
首先,需要将相关 PDF 处理库中的 DLL 文件添加为 .NET 项目的引用。你可以从对应的官方资源中下载所需文件,也可以通过 NuGet 安装相应的 PDF 处理组件。
PM> Install-Package Spire.PDF如果只需要提取 PDF 某一页面中的图片,可以先获取该页面包含的图片信息,再将图片逐一保存为独立文件。使用 C# 和 .NET PDF 处理库可以较方便地完成这一过程。
以下示例使用相关 PDF API 获取页面中的图片信息。通过 GetImagesInfo() 方法可以读取指定页面中的图片集合,然后使用 Image.Save() 将提取出的图片保存为 PNG 文件。
基本步骤如下:
PdfDocument 对象。LoadFromFile() 方法加载 PDF 文件。Pages[index] 获取需要处理的页面。GetImagesInfo() 获取页面中的图片信息。Image.Save() 将每张图片保存为 PNG 文件。这种方式适用于只需要提取 PDF 中某个特定页面图片的场景,可以避免遍历整个文档,从而减少不必要的处理。
完整示例代码如下:
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("C:\\Users\\Administrator\\Desktop\\Input.pdf");
// 获取指定页面
PdfPageBase page = doc.Pages[0];
// 创建一个 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("C:\\Users\\Administrator\\Desktop\\Extracted\\Image-" + i + ".png");
}
// 释放资源
doc.Dispose();
}
}
}了解如何从指定页面提取图片后,你还可以遍历 PDF 文档中的所有页面,并从每个页面中提取图片。这样可以一次性获取整个文档中包含的所有图片。
从整个 PDF 文档中提取所有图片的步骤如下:
完整示例代码如下:
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("C:\\Users\\Administrator\\Desktop\\Input.pdf");
// 创建一个 PdfImageHelper 对象
PdfImageHelper imageHelper = new PdfImageHelper();
// 声明一个 int 类型变量
int m = 0;
// 遍历所有页面
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("C:\\Users\\Administrator\\Desktop\\Extracted\\Image-" + m + ".png");
m++;
}
}
// 释放资源
doc.Dispose();
}
}
}提取 PDF 中的图片是文档处理中的常见需求。通过 C# 和 .NET PDF 处理库,可以根据实际需求提取单个页面中的图片,也可以遍历整个 PDF 文档,一次性获取所有页面中的图片。
本文介绍了两种实现方式:第一种针对指定页面,通过获取页面中的图片信息并逐一保存,实现精准提取;第二种遍历 PDF 的所有页面,获取每一页中的图片并保存为独立的 PNG 文件。开发者可以根据具体应用场景选择合适的方法,从而更高效地处理和管理 PDF 中的图像资源。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。