首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 使用 PDFBox 提取 PDF 文字內容範例

     編輯:Java 相關知識

Java 使用 PDFBox 提取 PDF 文字內容範例

Apache PDFBox 是一個開源的 Java PDF 函式庫,支援建立、操作、提取 PDF 文件內容。本文示範如何使用 PDFBox 的 PDFTextStripper 類別,從 PDF 檔案中擷取指定頁碼範圍的純文字內容。

Maven 依賴

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox-app</artifactId>
    <version>2.0.27</version> <!-- 請使用最新版本 -->
</dependency>

核心程式碼

package pdf;

import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

public class StripPDFContent {

    public static String getText(File file, int startPage, int endPage) throws IOException {
        try (PDDocument document = PDDocument.load(file)) {
            PDFTextStripper stripper = new PDFTextStripper();
            stripper.setSortByPosition(true);      // 依位置排序文字
            stripper.setStartPage(startPage);      // 起始頁 (1-based)
            stripper.setEndPage(endPage);          // 結束頁
            return stripper.getText(document);
        }
    }

    public static void main(String[] args) {
        File file = new File("/path/to/your/document.pdf");
        try {
            String content = getText(file, 1, 10); // 提取第 1-10 頁
            System.out.println(content);
        } catch (IOException e) {
            System.err.println("PDF 文字提取失敗: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

關鍵類別與方法說明

  • PDDocument.load(File):載入 PDF 文件,實作 AutoCloseable,建議用 try-with-resources 自動關閉。
  • PDFTextStripper:核心文字提取器。
    • setSortByPosition(true):依照座標位置排序輸出文字,閱讀順序更自然。
    • setStartPage(int) / setEndPage(int):限定提取頁碼範圍 (1 起算)。
    • getText(PDDocument):執行提取並回傳字串。

進階應用提示

  • 字體處理:PDFBox 另包含 FontBox 子專案,可進一步分析字體資訊。
  • 中繼資料:JempBox 子專案支援 XMP 元資料讀寫。
  • 表單填寫:可使用 PDAcroForm 操作互動式表單欄位。
  • 替代方案:iText (商業授權) 功能更強大,適合複雜 PDF 生成與操作需求。

常見問題

  1. 亂碼:確認 PDF 內嵌字體或系統安裝對應字體。
  2. 效能:大型 PDF 建議分頁處理或使用非同步執行。
  3. 加密 PDF:需先使用 PDDocument.load(file, password) 解密。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved