C# 从PDF文档中提取图片
当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,避免每次都要从 PDF 中查找。本文将介绍如何使用C#通过代码从PDF文档中提取图片,包含以下两个示例:
- C# 提取指定 PDF 页面中的图片
- C# 提取PDF 文档中所有图片
提取PDF图片需要用到 Spire.PDF for .NET 库。可以通过此链接下载产品包后手动添加引用,或者直接通过NuGet安装。
C# 提取指定 PDF 页面中的图片
PdfImageHelper 类可用于帮助用户管理 PDF 文档中的图像,要从某个指定的PDF页面中提取图片,参考以下步骤:
- 使用 PdfDocument 类的 LoadFromFile() 方法加载 PDF 文件。
- 通过 PdfDocument 类的 Pages[index] 属性获取指定页面。
- 创建 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)
{
// 加载PDF文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("AI.pdf"); // 获取第一页
PdfPageBase page = pdf.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("图片\\图-" + i + ".png");
} pdf.Dispose();
}
}
}

C# 提取PDF 文档中所有图片
要获取整个PDF文档中的图片,就需要遍历每一页然后再提取,具体参考以下步骤:
- 使用 PdfDocument 类的 LoadFromFile() 方法加载 PDF 文件。
- 创建 PdfImageHelper 对象。
- 遍历文档中的每一个页面。
- 通过 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)
{
// 加载PDF文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("AI.pdf"); // 创建PdfImageHelper对象
PdfImageHelper imageHelper = new PdfImageHelper(); int m = 0;
// 遍历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++)
{
// 获取某个指定图片信息
PdfImageInfo imageInfo = imageInfos[j]; // 获取指定图片
Image image = imageInfo.Image; // 将图片保存为png格式
image.Save("PDF图片\\图-" + m + ".png");
m++;
} } pdf.Dispose();
}
}
}

- 通过C# 操作PDF中图片以及其他元素的更多教程可参考:
https://www.e-iceblue.cn/spirepdfnet/spire-pdf-for-net-program-guide-content.html
- 移除水印可以点击申请试用授权:
https://www.e-iceblue.cn/misc/temporary-license.html
C# 从PDF文档中提取图片的更多相关文章
- 如何使用免费PDF控件从PDF文档中提取文本和图片
如何使用免费PDF控件从PDF文档中提取文本和图片 概要 现在手头的项目有一个需求是从PDF文档中提取文本和图片,我以前也使用过像iTextSharp, PDFBox 这些免费的PD ...
- 如何通过C#/VB.NET从PowerPoint文档中提取图片
PowerPoint是用于制作幻灯片(演示文稿)的应用软件,每张幻灯片中都可以包含文字.图形.图形.表格.声音和影像等多种信息.有时候我们发现在PPT里面有一些精美的图片,或者其他原因想要把PPT里面 ...
- 第一节:python提取PDF文档中的图片
由于项目需要将PDF文档当中的图片转换成图片,所以参考了这篇文章https://blog.csdn.net/qq_15969343/article/details/81673302后项目得以解决. 1 ...
- OrCAD Capture CIS 16.6 从PDF文档中提取引脚定义,实现快速地编辑Part的引脚名称
操作系统:Windows 10 x64 工具1:OrCAD Capture CIS 16.6-S062 (v16-6-112FF) 工具2:Excel 工具3:Solid Converter 打开需要 ...
- C# 提取Word文档中的图片
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
- 将Word,PDF文档转化为图片
#region 将Word文档转化为图片 /// <summary> /// 将Word文档转化为图片 /// </summary> /// <param name=&q ...
- 【python】使用HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
一.从HTML文档中提取链接 模块HTMLParser,该模块使我们能够根据HTML文档中的标签来简洁.高效地解析HTML文档. 处理HTML文档的时候,我们常常需要从其中提取出所有的链接.使用HTM ...
- 如何突出显示PDF文档中的一些重要文本信息
PDF文档中如果存在着太多的文字时,阅读者会容易遗漏很多重要的信息.但如果,文档中存在着一些特殊标记的文字时,比如标黄.标红文本时,很多人都会给予特别关注. 因此,当大家在使用pdfFactory专业 ...
- 在LaTeX文档中插入图片的几种常用的方法
LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件. 在LaTeX文档中插入图片 ...
- Java 在PDF文档中绘制图形
本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...
随机推荐
- 并发编程 - 线程同步(九)之信号量Semaphore
前面对自旋锁SpinLock进行了详细学习,今天我们将学习另一个种同步机制--信号量Semaphore. 01.信号量是什么? 在 C# 中,信号量(Semaphore)是一种用于线程同步的机制,能够 ...
- 【博客搭建】Latex数学书写笔记
[博客搭建]Latex 数学书写笔记 Latex 是一种文档书写语言,支持大量的特殊字符,包括书写数学公式,并且很多 Markdown 环境都支持该语言. 布局实现 靠左:使用内联数学块$...$. ...
- 『Python底层原理』--Python整数为什么可以无限大
整数类型是编程中最常见的数据类型之一,但它的实现细节却鲜为人知. 与其他语言不同,Python 的整数是任意精度的,这意味着它们可以无限大,仅受限于内存. 这种特性使得 Python 在处理大整数时非 ...
- 用于敏捷开发的最佳免费 UML 工具 2022
Table of Contents hide 1 最好的在线免费 UML图工具 2 免费的 UML Visual Paradigm 在线平台 3 其他福利 4 用于正式和大规模可视化建模的 Vis ...
- JavaGUI - [01] 常见API
题记部分 一.Component 作为基类,提供了如下常用的方法来设置组件的大小.位置.可见性等. setLocation(int x,int y) 设置组件的位置 setSize(int width ...
- spring - [01] 简介
Spring发展至今,已经形成了一个生态体系(Spring全家桶) 001 || Spring 定义 Spring是一款主流的Java EE轻量级开源框架,目的是用于简化Java企业级应用的开发难 ...
- Flink学习(八) Flink SQL & Table 编程和案例
Flink Table & SQL 概述背景我们在前面的课时中讲过 Flink 的分层模型,Flink 自身提供了不同级别的抽象来支持我们开发流式或者批量处理程序,下图描述了 Flink 支持 ...
- 什么是集群&集群的分类
集群(Cluster) 计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中 ...
- webpack3使用additionalData和prependData都不管用
10.css相关配置 utils.js sass: generateLoaders('sass', { indentedSyntax: true, implementation: require('n ...
- linux命令提示符高亮
说明 \033 或 \e :两者是等价的,表示转义字符(ASCII escape character),即键盘左上角的ESC键.033是ESC的八进制ASCII码.注意,在"老式" ...