使用 Java 讀取 PDF 文件
一、概述
便攜式文檔格式 (PDF) 是一種常見的文檔文件格式。用於分發需要保留其原始格式的電子文檔。
在本教程中,我們將探索使用 Java 閱讀 PDF 文件的兩個最流行的庫:Apache PDFBox 和 iText。
2.設置
我們將使用 Maven 來管理依賴項。
此外,我們將向項目根目錄添加一個示例 PDF 文件。該文件包含一個簡單的短語“Hello World!”。
接下來,我們將閱讀示例 PDF 文件並根據預期結果測試提取的文本。
3. 使用 Apache PDFBox
Apache PDFBox 是一個免費的開源 Java 庫,用於處理和操作 PDF 文檔。它的功能包括提取文本、將 PDF 渲染為圖像以及合併和拆分 PDF。
讓我們將Apache PDFBox依賴項添加到pom.xml
中:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>${pdfbox.version}</version>
</dependency>
下面是一個使用 Apache PDFBox 從 PDF 文件中讀取文本的簡單示例:
@Test
public void givenSamplePdf_whenUsingApachePdfBox_thenCompareOutput() throws IOException {
String expectedText = "Hello World!\n";
File file = new File("sample.pdf");
PDDocument document = PDDocument.load(file);
PDFTextStripper stripper = new PDFTextStripper();
String text = stripper.getText(document);
document.close();
assertEquals(expectedText, text);
}
在這個例子中,我們創建了一個新的PDDocument
實例來將 PDF 文件加載到程序中。然後,我們創建了一個新的PDFTextStripper
實例並調用了getText()
以從 PDF 文件中提取文本。
4. 使用 iText
iText 是一個用於在 Java 中生成和使用 PDF 文件的開源庫。它提供了一個簡單的 API,用於從 PDF 文件中讀取文本。
首先,讓我們在pom.xml
中包含iText依賴項:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>${itextpdf.version}</version>
</dependency>
讓我們看一個使用 iText PDF 庫從 PDF 文件中提取文本的簡單示例:
@Test
public void givenSamplePdf_whenUsingiTextPdf_thenCompareOutput() throws IOException {
String expectedText = "Hello World!";
PdfReader reader = new PdfReader("sample.pdf");
int pages = reader.getNumberOfPages();
StringBuilder text = new StringBuilder();
for (int i = 1; i <= pages; i++) {
text.append(PdfTextExtractor.getTextFromPage(reader, i));
}
reader.close();
assertEquals(expectedText, text.toString());
}
在這個例子中,我們創建了一個新的PdfReader
實例來打開 PDF 文件。然後,我們調用getNumberOfPages()
方法來獲取 PDF 文件的頁數。最後,我們遍歷頁面並調用PdfTextExtractor
上的getTextFromPage()
來提取頁面的內容。
5.結論
在本文中,我們學習了用 Java 讀取 PDF 文件的兩種不同方式。我們使用 iText 和 Apache PDFBox 庫從示例 PDF 文件中提取文本。這兩個庫都提供了簡單有效的 API,用於從 PDF 文檔中提取文本。
與往常一樣,示例的完整源代碼可在 GitHub 上獲得。