没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉炜炜|2025-07-28 11:46:19.627|阅读 90 次
概述:在处理包含图片的 PDF 文件时,例如扫描文档、产品手册或宣传资料,我们经常需要将其中的图像提取出来,用于保存、识别或再加工。本文将介绍如何使用 Spire.PDF for Java 实现 从 PDF 中提取图片,并提供基础操作方法与高级提取技巧。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
在处理包含图片的 PDF 文件时,例如扫描文档、产品手册或宣传资料,我们经常需要将其中的图像提取出来,用于保存、识别或再加工。E-iceblue旗下Spire系列产品,是文档处理领域的佼佼者,支持国产化信创。本文将介绍如何使用 Spire.PDF for Java 实现 从 PDF 中提取图片,并提供基础操作方法与高级提取技巧。无论你是在开发一个图像提取工具,还是希望通过 Java 从 PDF 中获取嵌入图像,本教程都将提供实用的代码示例和详尽的解读。
加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
在 Java 中直接处理 PDF 并提取图像并不容易。由于 PDF 文件中的图片可能被压缩、编码或嵌入在复杂结构中,使用原生 API 很难有效完成图像提取任务。
Spire.PDF for Java 提供了简洁的 API,能够准确识别并提取 PDF 中的嵌入图像,非常适合构建文档处理和图像提取类应用。
开发环境建议如下:
Maven 引入方式:
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>11.7.5</version> </dependency>
我们可以使用 PdfImageHelper 类来遍历 PDF 各页并提取图像信息,然后获取图像内容并保存。该类可自动识别嵌入或内联图像,并返回其内容及元数据信息(如尺寸、位置等)。
import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.utilities.PdfImageHelper; import com.spire.pdf.utilities.PdfImageInfo; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ExtractAllImagePDF { public static void main(String[] args) throws IOException { // 创建 PdfDocument 类的实例 PdfDocument pdf = new PdfDocument(); // 加载 PDF 文件 pdf.loadFromFile("input.pdf"); // 创建 PdfImageHelper 类的实例 PdfImageHelper imageHelper = new PdfImageHelper(); // 遍历 PDF 的每一页,提取图片 for (int i = 0; i < pdf.getPages().getCount(); i++) { PdfPageBase page = pdf.getPages().get(i); // 获取当前页面上的图片信息 PdfImageInfo[] imagesInfo = imageHelper.getImagesInfo(page); // 遍历所有图片信息 for (int j = 0; j < imagesInfo.length; j++) { PdfImageInfo imageInfo = imagesInfo[j]; // 获取图片并保存为文件 BufferedImage image = imageInfo.getImage(); File file = new File("output/Images/Page" + i+1 + "_Image" + j+1 + ".png"); ImageIO.write(image, "png", file); // 写入文件 } } // 关闭文档 pdf.close(); } }
提示:确保执行前已创建好“output”目录,否则将抛出 IOException。
该方法适用于大多数含图 PDF,可快速提取图片资源:
某些 PDF 页面会包含水印、边框、按钮等装饰性图像。为避免提取这些不必要内容,可通过以下策略进行优化:
一些 PDF 页面包含背景图,而提取时背景图通常会作为第一张图片,可通过跳过首个图像过滤背景图:
for (int i = 1; i < imagesInfo.length; i++) { // 从第二张图开始处理 BufferedImage image = imagesInfo[i].getImage(); ImageIO.write(image, "PNG", new File("output/image_" + (i - 1) + ".png")); }
还可以使用 imagesInfo[].getBounds() 获取图像位置与尺寸,结合逻辑判断其是否属于背景。
为避免导出图标、按钮等无用小图,可设置尺寸阈值过滤掉这些小图:
BufferedImage image = imagesInfo[i].getImage(); if (image.getWidth() > 200 && image.getHeight() > 200) { ImageIO.write(image, "PNG", new File("output/image_" + i + ".png")); }
建议根据文档实际情况调整尺寸阈值。
根据用途选择不同格式:
ImageIO.write(image, "JPEG", new File("output/image_" + i + ".jpg")); // 有损压缩 ImageIO.write(image, "BMP", new File("output/image_" + i + ".bmp")); // 无损保存
也可以写入字节流,便于在线处理或上传:
ByteArrayOutputStream stream = new ByteArrayOutputStream(); ImageIO.write(image, "PNG", stream);
可以。Spire.PDF for Java 提供专门的图像提取接口,能够快速获取页面中的嵌入图像。
是的。提取后的图像保持原始分辨率与编码。推荐使用 PNG 或 BMP 以获取无损质量。
图像提取是将 PDF 中嵌入的原始图像提取出来;而页面渲染是将整个 PDF 页面(包括文字与排版)转换为一张图像,前者更轻量,后者更全面。
可以。大多数扫描 PDF 其实是嵌入了整页位图(如 JPG/TIFF),可以直接提取。
通过本文的讲解,我们了解了如何使用 Spire.PDF for Java 通过 Java 代码从 PDF 文件中提取图像,包括基础提取方法和过滤背景图、小图标等进阶技巧。无论是处理扫描件、设计图,还是提取营销资料中的图片,我们都可以通过 Java 程序轻松提取。
————————————————————————————————————————
关于慧都科技:
慧都科技是一家行业数字化解决方案公司,长期专注于软件、油气与制造行业。公司基于深入的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与长期竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务。E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化信创,帮助企业高效构建文档处理的应用程序。
欢迎下载|体验更多E-iceblue产品
获取更多信息请咨询 ;技术交流Q群(125237868)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@fc6vip.cn
文章转载自:慧都网本文将为大家介绍如何用MyEclipse开发Java EE企业应用程序,欢迎下载最新版体验!
本文主要介绍了Tool Call Confirmation API层和DevExpress Blazor AI Chat组件的相关可自定义接口,欢迎下载最新版体验!
本文将带大家学习如何在Kendo UI for Angular 网格组件中使用Angular的httpResource API,欢迎下载最新版组件体验!
本文主要介绍DevExpress WPF Grid控件如何将数据绑定虚拟数据源,欢迎下载最新版组件体验!
Spire.PDF for .NET是独立的PDF控件,用于.NET程序中创建、编辑和操作PDF文档
Spire.PDF for Java独立专业的Java PDF组件,覆盖PDF文档生成、处理、转换等功能。
Spire.Office for .NET专业的.NET Office套件,涵盖office文档创建、编辑、转换、管理和OCR内容识别等操作
Spire.Office for JavaSpire.Office for Java 是企业级的处理办公文档的Java应用程序的API。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@fc6vip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢