C#代码轻松实现从PDF文档中提取图片
从 PDF 中提取图片是许多用户都会遇到的常见需求,例如将图片重新用于演示文稿、归档重要图像,或便于后续分析。掌握使用 C# 提取 PDF 图片的方法,可以帮助开发者更高效地管理资源,并简化日常工作流程。
本文将介绍如何使用 C# 从 PDF 的单个页面以及整个 PDF 文档中提取图片,并以 .NET PDF 处理库作为实现工具。
安装 .NET PDF 处理库
首先,需要将相关 PDF 处理库中的 DLL 文件添加为 .NET 项目的引用。你可以从对应的官方资源中下载所需文件,也可以通过 NuGet 安装相应的 PDF 处理组件。
PM> Install-Package Spire.PDF
从指定 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 文档中的所有页面,并从每个页面中提取图片。这样可以一次性获取整个文档中包含的所有图片。
从整个 PDF 文档中提取所有图片的步骤如下:
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载 PDF 文件。
- 创建一个 PdfImageHelper 对象。
- 遍历文档中的所有页面。
- 使用 PdfDocument.Pages[index] 属性获取指定页面。
- 使用 PdfImageHelper.GetImagesInfo() 方法获取该页面中的图片信息集合。
- 遍历图片信息集合,并使用 PdfImageInfo.Image.Save() 方法将每张图片保存为 PNG 文件。
完整示例代码如下:
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 中的图像资源。
到此这篇关于C#代码轻松实现从PDF文档中提取图片的文章就介绍到这了,更多相关C# PDF提取图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
老生常谈C# 中的 StreamReader 和 StreamWriter 类
这篇文章主要介绍了老生常谈C# 中的 StreamReader 和 StreamWriter 类,StreamReader 和 StreamWriter 位于 System.IO 命名空间中,当您想要读取或写入基于字符的数据时,这两个类都很有用,需要的朋友可以参考下2024-06-06


最新评论