如何在 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。此單行模式讓您直接取得所有使用者提交的值,無需解析視覺佈局。

實務應用

這些功能在各種實務情境中都相當寶貴:

  1. 法律文件審查: 提取註解以審閱合約中的評論或標記。
  2. 文件管理系統: 取得附件與書籤,以提升導覽與索引效率。
  3. 安全交易: 使用數位簽章 API 驗證 PDF 簽章。
  4. 資料收集表單: 讀取 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

相關教學