如何使用Java读取PDF文件?

82

我想使用Java从PDF文件中读取一些文本数据。我该怎么做?

3个回答

76

PDFBox 是我找到的最好用于此目的的库,它很全面,如果只进行基本文本提取,则使用起来非常容易。可以在这里找到示例。

页面上有解释,但需要注意的一件事是,在使用 setStartPage() 和 setEndPage() 时,开始和结束索引包括在内。第一次跳过了这个解释,然后花了一段时间才意识到每次调用返回超过一页的原因!

Itext 是另一个选择,也适用于 C#,但我个人从未使用过。与 PDFBox 相比,低级别一些,因此如果您只需要基本的文本提取,则不太适合该工作。


33

使用Apache PDFBox,操作方式如下:

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

PDDocument document = PDDocument.load(new File("test.pdf"));
if (!document.isEncrypted()) {
    PDFTextStripper stripper = new PDFTextStripper();
    String text = stripper.getText(document);
    System.out.println("Text:" + text);
}
document.close();

5
导入以下内容:import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.text.PDFTextStripperByArea; - Srivastav

19

PDFBox 包含 文字提取工具

iText 在文本处理方面有更多的低级支持,但是你需要编写大量代码才能进行文本提取。

iText in Action 对于从 PDF 中提取文本的限制进行了很好的概述,无论使用哪个库(第18.2节:提取和编辑文本),并且有一个令人信服的解释为什么该库不支持文本提取。简而言之,编写可以处理简单情况的代码相对容易,但通常无法从 PDF 中提取文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接