PDFBox getText 不返回所有可见文本

PDFBox getText not returning all of the visible text

我正在使用 PDFBox 从我的 PDF 文档中提取文本。它检索文本,但不是全部(具体来说,似乎 title/header 和页脚文本丢失)。缺少的部分不是图像,是在 foxit reader 中使用文本视图时提取的。

我使用的是 1.8.12 版本,并用 2.0.2 做了一个测试用例,只是想看看它是否会 return 更多内容。

这是我用于 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 是否因为文本位于某些装饰元素之上(文本下方的矩形)而失败?

谢谢

编辑:link to file in question

正如评论中所讨论的那样,文本并没有丢失,而是在 "wrong" 位置。默认情况下,PDFBox 文本提取会提取内容流中出现的字符,但它们并不总是以 "natural" 方式出现。 PDF 文件是由软件创建的,而不是由人创建的。

另一种方法是使用排序选项:

stripper.setSortByPosition(true)

但是,正如 mkl 指出的那样,如果文本分为两列,您也不会喜欢结果。