我使用PDFBox从我的PDF文档中提取文本。它检索文本,但不是全部(具体来说,似乎缺少标题/页眉和页脚文本)。缺少的部分不是图像,而是在foxit阅读器中使用文本视图时提取的。
我使用版本1.8.12,并使用2.0.2做了一个测试用例,只是为了看看它是否会返回更多的内容。
这是我在2.0.2中使用的代码:
public static void main(String[] args) {
File file = new File("D:\\file.pdf");
try {
PDDocument doc = PDDocument.load(file);
PDFTextStripper stripper = new PDFTextStripper();
//stripper.setSuppressDuplicateOverlappingText(false);
stripper.getText(doc);
} catch (Exception e) {
System.out.println("Exc errirs ");
}
}
现在我想知道有没有什么设置我错过了?PDFBox失败是因为文本在一些装饰元素的顶部(文本下的矩形)?
感谢编辑:链接到相关文件
正如评论中所讨论的那样,文本并没有丢失,而是在"错误"的位置。默认情况下,PDFBox文本提取在内容流中提取字符,但它们并不总是以"自然"的方式出现。PDF文件是由软件创建的,而不是由人创建的。
另一个选择是使用排序选项:
stripper.setSortByPosition(true)
但是,正如mkl所指出的,如果文本在两列中,您也不会喜欢结果