如何在 Java 中使用 GroupDocs.Metadata 提取 PDF 数据
如果您想 读取 PDF 表单字段 并提取 PDF 中的每一条嵌入信息,您来对地方了。在本教程中,我们将演示如何使用 GroupDocs.Metadata for Java 提取 PDF 文件中的注释、附件、书签、数字签名和表单字段。无论您是需要验证合同签名、收集可填写表单的用户提交数据,还是仅仅归档嵌入的资产,下面的步骤都为您提供了可用于生产的基础。
快速答案
- 如何提取 PDF 注释? 调用
root.getInspectionPackage().getAnnotations()并遍历返回的集合。 - 我可以读取 PDF 表单字段吗? 可以——调用
root.getInspectionPackage().getFields()并读取每个PdfFormField。 - 哪个库支持在 Java 中进行 PDF 签名验证? GroupDocs.Metadata 提供
DigitalSignature对象用于此目的。 - 我需要许可证吗? 免费试用可用于基本检查;生产使用需要完整许可证。
- 需要哪个 JDK 版本? JDK 8 或更高。
什么是使用 GroupDocs.Metadata 的 PDF 提取?
InspectionPackage 对象是入口点,公开所有可提取的 PDF 元素,如注释、附件、书签、签名和表单字段。它抽象了底层 PDF 结构,使您能够专注于业务逻辑,而不是 PDF 规范。
使用 GroupDocs.Metadata 提取 PDF 数据意味着您可以在不渲染文档的情况下以编程方式读取每一条元数据。SDK 以流式方式处理内容,使您能够处理数百页的 PDF,同时将内存使用保持在 100 MB 以下。
为什么使用 GroupDocs.Metadata 处理 PDF?
GroupDocs.Metadata 支持 30+ PDF 元素类型,并且能够在不将整个文档加载到内存中的情况下处理高达 500 MB 的文件,提供比许多传统 PDF 解析器 3 倍的速度提升。该库可在任何兼容 Java 的平台上运行,无需外部依赖,并提供统一的 API 来处理注释、附件、书签、签名和表单字段——全部集中在一个包中。
前提条件
必需的库、版本和依赖项
要在 Java 中使用 GroupDocs.Metadata,请通过 Maven 将其作为依赖项添加,或直接从 GroupDocs 网站下载。
环境设置要求
- Java 开发工具包 (JDK): 确保已安装 JDK 8 或更高版本。
- IDE: 使用任何 Java IDE,例如 IntelliJ IDEA、Eclipse 或 NetBeans。
知识前提
- 基本的 Java 编程理解。
- 熟悉在应用程序中处理 PDF(例如,了解注释或表单字段是什么)。
为 Java 设置 GroupDocs.Metadata
要开始使用 GroupDocs.Metadata,请按如下方式设置您的环境:
Maven 设置
在您的 pom.xml 文件中添加以下仓库和依赖项:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/metadata/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>24.12</version>
</dependency>
</dependencies>
直接下载
或者,直接从 GroupDocs.Metadata for Java releases 下载最新版本。
许可证获取
- 免费试用: 测试核心功能。
- 临时许可证: 用于扩展测试。
- 购买: 获得完整访问权限和支持。
基本初始化
安装后,在您的 Java 项目中按如下方式初始化库:
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.PdfRootPackage;
try (Metadata metadata = new Metadata("path/to/your/document.pdf")) {
PdfRootPackage root = metadata.getRootPackageGeneric();
// Begin exploring PDF features...
}
实现指南
使用 GroupDocs.Metadata 探索各种功能。
检查 PDF 注释
注释可能包含关键信息。以下是提取方法:
概述
Annotation 类表示单个 PDF 注释,例如评论、突出显示或便签。它提供作者、文本、页码和外观等属性。
步骤实现
1. 检索注释
import com.groupdocs.metadata.core.PdfAnnotation;
if (root.getInspectionPackage().getAnnotations() != null) {
for (PdfAnnotation annotation : root.getInspectionPackage().getAnnotations()) {
System.out.println("Name: " + annotation.getName());
System.out.println("Text: " + annotation.getText());
System.out.println("Page Number: " + annotation.getPageNumber());
}
}
- 参数:
root对象包含 PDF 的元数据。 - 返回值: 返回每个注释的详细信息,包括名称、文本内容和页码。
故障排除提示
- 确保文档路径正确,以避免文件未找到错误。
- 对注释进行空检查,以防止
NullPointerException。
检查 PDF 附件
附件通常嵌入在 PDF 文件中。以下是访问方法:
概述
Attachment 类封装了嵌入的文件,提供其名称、MIME 类型、大小和可选描述。
步骤实现
1. 检索附件
import com.groupdocs.metadata.core.PdfAttachment;
if (root.getInspectionPackage().getAttachments() != null) {
for (PdfAttachment attachment : root.getInspectionPackage().getAttachments()) {
System.out.println("Name: " + attachment.getName());
System.out.println("MIME Type: " + attachment.getMimeType());
System.out.println("Description: " + attachment.getDescription());
}
}
- 参数:
root对象提供对 PDF 附件的访问。 - 返回值: 为每个附件提供名称、MIME 类型和描述等详细信息。
故障排除提示
- 在访问之前确认您的 PDF 实际包含附件。
检查 PDF 书签
书签帮助在长文档中导航。以下是提取方法:
概述
Bookmark 表示 PDF 中的层次化导航点,提供其标题、页码引用和子书签。
步骤实现
1. 检索书签
import com.groupdocs.metadata.core.PdfBookmark;
if (root.getInspectionPackage().getBookmarks() != null) {
for (PdfBookmark bookmark : root.getInspectionPackage().getBookmarks()) {
System.out.println("Title: " + bookmark.getTitle());
}
}
- 参数:
root对象包含书签数据。 - 返回值: 提供每个书签的标题。
故障排除提示
- 并非所有 PDF 都包含书签;在处理前检查空值。
检查 PDF 数字签名
数字签名确保文档真实性。以下是验证方法:
概述
DigitalSignature 对象让您访问每个嵌入 PDF 的签名的证书详情、签名时间和验证状态。
步骤实现
1. 检索数字签名
import com.groupdocs.metadata.core.DigitalSignature;
if (root.getInspectionPackage().getDigitalSignatures() != null) {
for (DigitalSignature signature : root.getInspectionPackage().getDigitalSignatures()) {
System.out.println("Certificate Subject: " + signature.getCertificateSubject());
System.out.println("Comments: " + signature.getComments());
System.out.println("Signed Time: " + signature.getSignTime());
}
}
- 参数:
root对象包含数字签名信息。 - 返回值: 包括证书主题、注释和签名时间等详细信息。
故障排除提示
- 确保 PDF 已签名;否则将没有数字签名可用。
检查 PDF 字段
表单字段是交互式文档的关键。以下是访问方法:
概述
PdfFormField 类表示单个交互元素(文本框、复选框、单选按钮等),并提供其名称、值和字段类型。
步骤实现
1. 检索表单字段
import com.groupdocs.metadata.core.PdfFormField;
if (root.getInspectionPackage().getFields() != null) {
for (PdfFormField field : root.getInspectionPackage().getFields()) {
System.out.println("Name: " + field.getName());
System.out.println("Value: " + field.getValue());
}
}
- 参数:
root对象提供对表单字段的访问。 - 返回值: 检索每个表单字段的名称和值。
故障排除提示
- 并非所有 PDF 都包含表单字段;请处理可能缺失的情况。
如何读取 PDF 表单字段?
Metadata 是用于打开和检查 PDF 文件的主要类。使用 Metadata metadata = new Metadata("sample.pdf") 加载 PDF,调用 metadata.getInspectionPackage().getFields(),并遍历返回的集合以读取每个 PdfFormField。这种单行模式让您无需解析可视布局即可直接访问每个用户提交的值。
实际应用
这些功能在各种实际场景中非常有价值:
- 法律文件审查: 提取注释以审查合同中的评论或高亮。
- 文档管理系统: 检索附件和书签,以实现高效的导航和索引。
- 安全交易: 使用数字签名 API 验证 PDF 签名。
- 数据收集表单: 读取 PDF 表单字段,以在无需手动解析的情况下收集用户输入。
通过掌握这些技术,您将能够 读取 PDF 表单字段 并在任何基于 Java 的解决方案中快速、可靠地提取 PDF 信息。
常见问题
问:我可以使用 GroupDocs.Metadata 读取加密的 PDF 吗?
答:可以。将密码传递给 Metadata 构造函数,SDK 将在检查前解密文档。
问:GroupDocs.Metadata 与其他 PDF 库有何不同?
答:它专注于元数据的提取和修改,无需渲染文档即可运行,并且在典型服务器硬件上能够在 2 秒内处理 500 页的文件。
问:是否有办法仅提取特定的表单字段?
答:当然。检索字段集合后,可在处理结果前通过 field.getName() 或 field.getFieldType() 进行过滤。
问:最新的 GroupDocs.Metadata 需要哪个 Java 版本?
答:SDK 支持 JDK 8 及更高版本,包括 Java 11、17 及以后版本。
问:如何高效处理大型 PDF(数百 MB)?
答:如初始化示例所示使用 try‑with‑resources;SDK 以流式方式处理数据并及时释放资源,将内存使用保持在 100 MB 以下。
最后更新: 2026-06-01
测试版本: GroupDocs.Metadata 24.12
作者: GroupDocs