PDFBox getText不返回所有可见文本

问题描述:

我正在使用PDFBox从我的PDF文档中提取文本。它检索文本,但不是全部(特别是,看起来像标题/页眉和页脚文本丢失)。丢失的部分不是图像,在福昕阅读器中使用文本视图时会被提取。PDFBox getText不返回所有可见文本

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

感谢

编辑:link to file in question

+2

请分享一个可以重现问题的PDF。 – mkl

+0

在问题 –

+1

中添加链接而哪些文字缺失?在第1页中,具有前导符号的第一个“Windows Phone”行不是书写而是矢量图形。其余行“Windows Phone:”和“Empowering Business”由PDFBox提取。他们可能不会出现在你期望的地方,但他们在那里。 – mkl

正如在评论中讨论,对文本不缺,但在“错误”的位置。默认情况下,PDFBox文本提取会在字符进入内容流时提取字符,但它们并不总是以“自然”方式出现。 PDF文件是由软件创建的,而不是由人类创建的。

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

stripper.setSortByPosition(true) 

然而,正如MKL指出,如果文本是在两列,你不会喜欢的结果无论是。