如何在 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 Development Kit (JDK): 確保已安裝 JDK 8 或更高版本。
- IDE: 使用任何 Java IDE,例如 IntelliJ IDEA、Eclipse 或 NetBeans。
知識前置條件
- 具備 Java 程式設計的基本概念。
- 熟悉在應用程式中處理 PDF(例如了解註解或表單欄位是什麼)。
設定 GroupDocs.Metadata for Java
要開始使用 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 的中繼資料。 - 返回值: 返回每個註解的詳細資訊,包括名稱、文字內容與頁碼。
故障排除提示
- 確認文件路徑正確,以避免找不到檔案的錯誤。
- 為註解執行 null 檢查,以防止
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 都有書籤;在處理前檢查是否為 null。
檢查 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 資訊。
常見問題
Q: 我可以使用 GroupDocs.Metadata 讀取加密的 PDF 嗎?
A: 可以。將密碼傳入 Metadata 建構子,SDK 會在檢查前解密文件。
Q: GroupDocs.Metadata 與其他 PDF 函式庫有何不同?
A: 它專注於中繼資料的提取與修改,無需渲染文件,且在一般伺服器硬體上可於 2 秒內處理 500 頁的檔案。
Q: 有辦法只提取特定的表單欄位嗎?
A: 當然可以。取得欄位集合後,可在處理結果前依 field.getName() 或 field.getFieldType() 進行過濾。
Q: 最新的 GroupDocs.Metadata 需要哪個 Java 版本?
A: SDK 支援 JDK 8 及更新版本,包括 Java 11、17 及更高版本。
Q: 如何有效處理大型 PDF(數百 MB)?
A: 如初始化範例所示,使用 try‑with‑resources;SDK 以串流方式處理資料並即時釋放資源,記憶體使用量保持在 100 MB 以下。
最後更新: 2026-06-01
測試版本: GroupDocs.Metadata 24.12
作者: GroupDocs