使用 Java 解析 PDF 與 GroupDocs.Parser
在本完整教學中,您將學習如何透過強大的 GroupDocs.Parser 函式庫 使用 Java 解析 PDF。無論您需要提取發票號碼、抽取表格,或是從 PDF 檔案中擷取其他任何資料,本指南都會一步步帶領您完成設定環境到建立符合文件版面配置的自訂解析範本的全過程。
快速解答
- 應該使用哪個函式庫? GroupDocs.Parser for Java
- 我可以從 PDF 抽取表格嗎? Yes – use java pdf table extraction features
- 我需要授權嗎? A free trial is available; a permanent license is required for production
- 支援哪個 Java 版本? Java SE 8 or higher
- Maven 是推薦的設定嗎? Yes, Maven simplifies dependency management
介紹
自動化從 PDF 抽取資料是開發發票、報表或資料彙整系統的開發者常見的挑戰。透過使用 GroupDocs.Parser,您可以 使用 Java 解析 PDF,快速且可靠,並可自訂抽取流程以符合文件的獨特結構。
什麼是使用 Java 解析 PDF?
使用 Java 解析 PDF 是指以程式方式讀取 PDF 檔案的內容,並抽取您所需的資訊——文字、表格、影像或表單欄位——而不需要手動複製貼上。GroupDocs.Parser 提供高階 API,將底層 PDF 細節抽象化,讓您專注於業務邏輯。
為何使用 GroupDocs.Parser 進行自訂範本?
- 精準度: 定義精確座標或正則表達式模式,以捕捉正確資料。
- 彈性: 在同一範本中混合固定位置欄位、正則表達式欄位與表格抽取。
- 效能: 針對大型文件與批次處理進行最佳化。
- Java 友善: 可無縫整合至 Maven 與標準 Java 專案。
前置條件
在開始之前,請確保您具備以下條件:
必要的函式庫與版本
- GroupDocs.Parser for Java: 版本 25.5 或更新。
- 已安裝 Maven 以管理相依性。
環境設定需求
- Java SE 8 以上(建議使用 Java 11 或更新版本)。
- 用於 Java 開發的 IDE 或文字編輯器(IntelliJ IDEA、Eclipse、VS Code 等)。
知識前提
- 基本的 Java 程式設計。
- 熟悉 PDF 結構與常見的解析挑戰。
設定 GroupDocs.Parser for Java
您可以透過 Maven 或直接下載 JAR 檔案的方式,將 GroupDocs.Parser 加入您的專案。
使用 Maven
在您的 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>
直接下載
或者,從官方發行頁面下載最新的 JAR 檔案:GroupDocs.Parser for Java releases。
取得授權步驟
- 免費試用: 先使用試用版以探索 API。
- 臨時授權: 使用臨時金鑰進行短期測試。
- 購買: 取得永久授權以用於正式環境。
基本初始化與設定
以下是一個最小範例,示範如何使用 GroupDocs.Parser 開啟 PDF 檔案:
import com.groupdocs.parser.Parser;
public class PdfParserExample {
public static void main(String[] args) {
try (Parser parser = new Parser("path/to/your/document.pdf")) {
// Your parsing logic here
} catch (Exception e) {
e.printStackTrace();
}
}
}
如何使用自訂範本以 Java 解析 PDF
現在函式庫已就緒,讓我們建立一個自訂範本,告訴解析器精確的資料搜尋位置。
步驟 1:定義範本項目
我們將建立欄位,用於靜態的公司名稱、基於正則表達式的發票號碼,以及捕捉明細項目的表格。
import com.groupdocs.parser.templates.*;
private static Template getTemplate() {
// Fixed position for "FromCompany"
TemplateItem fromCompany = new TemplateField(
new TemplateFixedPosition(new Rectangle(new Point(35, 135), new Size(100, 10))),
"FromCompany");
// Regex‑based field for "Invoice Number"
TemplateItem invoiceNumber = new TemplateField(
new TemplateRegexPosition("Invoice Number"),
"InvoiceNumber");
// Linked position for extracting the value next to the label
TemplateItem invoiceNumberValue = new TemplateField(
new TemplateLinkedPosition(invoiceNumber,
new Size(200, 15),
new TemplateLinkedPositionEdges(false, false, true, false)),
"InvoiceNumberValue");
// Define table parameters for line items
TemplateTableParameters detailsTableParameters = new TemplateTableParameters(
new Rectangle(new Point(35, 320), new Size(530, 55)), null);
// Return the assembled template
return new Template(java.util.Arrays.asList(
fromCompany,
invoiceNumber,
invoiceNumberValue,
new TemplateTable(detailsTableParameters, "details", null)));
}
步驟 2:使用範本解析文件
範本準備好後,呼叫 parseByTemplate 以抽取資料。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.DocumentData;
import com.groupdocs.parser.data.PageTextArea;
public class PdfParserExample {
public static void main(String[] args) {
try (Parser parser = new Parser("path/to/your/document.pdf")) {
Template template = getTemplate();
DocumentData data = parser.parseByTemplate(template);
if (data != null) {
for (int i = 0; i < data.getCount(); i++) {
PageTextArea area = data.get(i).getPageArea() instanceof PageTextArea
? (PageTextArea) data.get(i).getPageArea()
: null;
System.out.println(data.get(i).getName() + ": " +
(area == null ? "Not a template field" : area.getText()));
}
} else {
System.out.println("Parse Document by Template isn't supported.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
主要設定選項
- 固定位置: 使用精確座標定位靜態文字(例如公司名稱)。
- 正則位置: 透過模式匹配定位動態文字,如發票號碼。
- 連結位置: 取得出現在已知標籤旁的值。
- TemplateTableParameters: 定義包含表格的區域,以啟用 java pdf table extraction。
疑難排解技巧
- 確認座標系統(點)與 PDF 版面相符。
- 使用 PDF 檢視器的測量工具微調位置。
- 確保正則表達式正確對應文件中的標籤格式。
- 確認所有 Maven 相依性已解決,且使用正確的函式庫版本。
Java PDF 表格抽取 – 真實案例
從 PDF 抽取表格在金融與物流領域是常見需求:
- 發票處理: 將明細項目、數量與價格抽取至資料庫。
- 報表合併: 將多個 PDF 的表格資料合併為單一 CSV,以供分析使用。
- 合規稽核: 自動驗證規範表單中是否出現必要欄位。
效能考量
處理大型 PDF 或批次作業時,請留意以下最佳實踐:
- 記憶體管理: 盡快關閉
Parser實例(使用 try‑with‑resources),釋放本機資源。 - 範本最佳化: 限制欄位數量,並將表格區域盡可能縮小。
- 版本更新: 定期升級至最新的 GroupDocs.Parser 版本,以獲得效能提升。
常見問題
Q: 使用 GroupDocs.Parser for Java 的前置條件是什麼?
A: 您需要 Java SE 8+、Maven(或手動 JAR 處理),以及 GroupDocs.Parser 25.5 或更新版本。
Q: 如何在 GroupDocs.Parser 中建立自訂範本?
A: 使用 TemplateFixedPosition、TemplateRegexPosition 與 TemplateTableParameters 定義欄位,然後將範本傳遞給 parser.parseByTemplate。
Q: 我可以使用此方法從 PDF 抽取表格嗎?
A: 當然可以。使用 TemplateTableParameters 指定表格區域,即可啟用 java pdf table extraction。
Q: 能否解析受密碼保護的 PDF?
A: 可以。建立 Parser 實例時提供密碼,例如 new Parser("file.pdf", "password")。
Q: 函式庫如何處理非常大的文件?
A: API 以串流方式處理資料,且在關閉 Parser 時釋放本機資源,讓您在不耗盡記憶體的情況下處理大型檔案。
結論
您現在已具備使用 GroupDocs.Parser 的自訂範本功能 使用 Java 解析 PDF 的堅實基礎。透過定義精確的位置、正則表達式與表格區域,您可以自動化抽取發票、報表及任何結構化 PDF 內容的資料。持續嘗試不同的範本設定,將抽取的資料整合至下游系統,並與開發者社群分享您的解決方案。
最後更新: 2026-04-05
測試環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs