Java 文档解析:使用 GroupDocs.Parser 从文档中提取图像
在本综合指南中,您将学习使用 GroupDocs.Parser for Java 提取各种文件类型中的图像的 java 文档解析 技术。我们将演示库的设置、创建自定义 ExternalResourceHandler,以及应用智能过滤,以便仅加载真正需要的资源——帮助您 降低内存使用 并加快处理速度。
快速答复
- GroupDocs.Parser 的作用是什么? 它可以解析超过 50 种文件格式,公开文本、图像和其他嵌入资源,以供编程使用。
- 我可以跳过不需要的图像吗? 可以——实现自定义
ExternalResourceHandler即可实时过滤资源。 - 需要哪个 Maven 版本? 使用 GroupDocs.Parser Java 25.5 或更高版本。
- 我需要许可证吗? 免费试用可用于评估;生产环境需要永久许可证。
- 此方法线程安全么? 为每个线程创建单独的
Parser实例;对象不共享。
什么是“从文档中提取图像”?
从文档中提取图像是指以编程方式检索嵌入的图片文件,以便您可以在原始文件之外存储、显示或进一步处理它们。当您需要缩略图、数据可视化,或在不保留完整源文档的情况下重新利用媒体资产时,此操作至关重要。
为什么在提取图像时过滤资源?
在提取图像时过滤资源可以在处理大型文件时 将内存使用降低最高达 70 %,因为不需要的二进制文件永远不会进入 JVM 堆。它还能通过阻止潜在的不安全内容加载来提升安全性,并加快流水线速度——包含数百个装饰性图形的大合同可以在原始时间的一小部分内完成解析。
前置条件
- Java Development Kit (JDK) – 版本 8 或更高。
- Maven – 用于依赖管理。
- 对 Java I/O 和异常处理有基本了解。
为 Java 设置 GroupDocs.Parser
将 GroupDocs 仓库和解析器依赖添加到您的 pom.xml 中:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
或者,从 GroupDocs.Parser for Java releases 下载最新版本。
许可证获取
- Free Trial – 免费试用核心功能。
- Temporary License – 在评估期间解锁全部功能。
- Purchased License – 商业部署时需要购买许可证。
如何在提取图像时过滤资源
要过滤资源,需实现 ExternalResourceHandler,该接口决定加载哪些嵌入文件。在打开文档之前将此处理程序注册到 ParserSettings,然后调用解析器。处理程序会接收每个资源的元数据,您可以根据类型、大小或名称等条件接受或拒绝它,从而确保仅处理所需的图像。
步骤 1:创建自定义处理程序
ExternalResourceHandler 是一个接口,允许您决定是否加载特定的外部资源——例如图像。实现 onLoading 方法,对想保留的资源返回 true,对要跳过的返回 false。onLoading 方法接收资源元数据,并应返回 true 以加载或 false 以跳过资源。
import com.groupdocs.parser.options.ExternalResourceHandler;
import com.groupdocs.parser.data.ExternalResourceLoadingArgs;
class Handler extends ExternalResourceHandler {
@Override
public void onLoading(ExternalResourceLoadingArgs args) {
if (!args.getUri().endsWith("installation.png")) {
args.setSkipped(true);
}
super.onLoading(args);
}
}
步骤 2:使用处理程序配置 ParserSettings
ParserSettings 是一个配置类,保存解析器的选项,如自定义处理程序、检测设置和性能调优。在打开文档之前,将您的处理程序实例传递给 ParserSettings。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
import com.groupdocs.parser.exceptions.IOException;
import com.groupdocs.parser.options.ParserSettings;
public class LoadExternalResources {
public static void run() throws IOException {
ParserSettings settings = new ParserSettings(new Handler());
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY", settings)) {
Iterable<PageImageArea> images = parser.getImages();
for (PageImageArea image : images) {
System.out.println(image.getFileType());
}
}
}
}
步骤 3:微调过滤逻辑
如果需要更复杂的规则——例如按图像大小、格式或 URI 模式过滤——请相应地扩展 onLoading 方法。例如,您可以跳过大于 2 MB 的任何图像,或忽略所有 PNG 文件。
@Override
public void onLoading(ExternalResourceLoadingArgs args) {
if (!args.getUri().endsWith("installation.png")) {
args.setSkipped(true);
}
}
实际应用
- Document Management Systems – 仅从扫描的合同中提取必要的图像以生成缩略图。
- Data Extraction Services – 跳过装饰性图形,专注于包含有价值数据的图表。
- Web Scraping Tools – 在检索基于 HTML 的文档中的有意义媒体时,过滤掉跟踪像素。
性能考虑因素
Parser 是打开文档并提供其内容访问的核心类。
- 提前过滤:在遍历资源之前应用自定义处理程序,以避免将不需要的数据加载到内存中。
- 及时释放:使用 try‑with‑resources (
try (Parser parser = …)) 释放本机资源。 - 异步处理:对于大批量文件,可在并行流中处理文档,同时确保每个
Parser实例仅限单线程使用。
常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 未返回图像 | 处理程序不小心跳过了所有资源 | 检查 if 条件,确保仅对不需要的 URI 调用 args.setSkipped(true)。 |
IOException 在大文件上 | 堆内存不足 | 增加 JVM 堆大小(-Xmx2g)或将页面分成更小的块处理。 |
| 许可证未被识别 | 在生产代码中使用试用 DLL | 通过 License.setLicense("path/to/license") 设置正确的许可证文件路径。 |
常见问题解答
Q: 使用自定义 ExternalResourceHandler 的主要目的是什么?
A: 它允许您控制加载哪些外部资源,通过过滤不必要的文件来提升安全性和性能。
Q: 我可以在没有许可证的情况下使用 GroupDocs.Parser for Java 吗?
A: 可以,提供免费试用,但高级功能和大规模部署需要有效许可证。
Q: 在使用 GroupDocs.Parser 解析时如何处理异常?
A: 将解析调用放在 try‑catch 块中,捕获 IOException 及其他特定异常,以优雅地处理错误。
Q: 过滤资源时常见的陷阱是什么?
A: URI 检查不正确可能会跳过所需文件;使用日志或断点来验证条件。
Q: 是否可以使用 GroupDocs.Parser for Java 解析非 HTML 文档?
A: 当然可以——GroupDocs.Parser 支持 PDF、Word、Excel、PowerPoint 等多种格式。
下一步
浏览完整的 API Reference 以获取更多设置,例如使用 ParserSettings.setDetectTables(true) 提取表格,或尝试 ParserSettings.setExtractEmbeddedFonts(true) 进行字体提取。
最后更新: 2026-06-22
测试环境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs
资源
- 文档: GroupDocs.Parser Documentation
- API 参考: API Details
- 下载: Latest Versions