2016-01-21 61 views
2

我想要使用Apache PDFBox的1.8.4提取PDF文本 - 我的代码波纹管:使用Apache PDFBox提取出错文字的文本?

public static void main(String[] args) throws Exception { 

     PDDocument pdfDocument = PDDocument.load(new File("rep.pdf")); 
     PDFTextStripper stripper = new PDFTextStripper(); 
     String s = stripper.getText(pdfDocument); 
     System.out.println(s); 
     pdfDocument.close(); 
    } 

PDF它要转换:https://www.dropbox.com/s/t35rr23v4383yvt/Form-V-report.pdf?dl=0

但有这样charecters:

!"#$%&'()*$+,)!'-,./+/ 
0+12)3$#'(,,)451#+('1)65+7(,+'(/ 
!"#$%&'(
)*+,-.##(',/$.0 
123.4.5,67,,89:;+ 
<3$'(=,>:++?,*99%@AB) 

任何解决方案?

提前 - 谢谢。

+0

读https://pdfbox.apache.org/1.8/faq.html#gibberish。顺便说一句,你的版本已经过时了。 (尽管当前版本无法提取文本) –

回答

3

Adob​​e集成了PDF混淆功能,可以由PDF创建者启用。我不记得它是如何工作的,但如果您使用任何在线PDF文本提取工具,或者尝试复制并粘贴文本,则会发现类似的问题。

您可能需要:

A)要求一个副本,而不启用此功能

B)需要进行反向工程它是如何做,并利用这些知识来扭转这种局面。

我有一个感觉是正确的答案

+0

我尝试运行'qpdf --stream-data = uncompress Form-V-report.pdf unompressed-report.pdf'来获取纯文本内容,但它没有帮助。内容仍然是胡言乱语。 – nolexa

+0

是的,它不会影响你通过它放置PDF的行为。最好的选择是将其转换为一些图像,并使用OCR应用程序来完成,而不是试图提取文本。这是我所说的混淆的结果。 –

+0

* Adob​​e集成了PDF混淆功能,可由PDF创建者启用* - 这是一种有趣的方式。更常见的是这样的观点,即格式PDF用于*显示*文档;为了允许额外的功能,如*文本提取*,额外的信息必须被添加到PDF或特定的标准字形ID必须被使用。混淆确实可以通过未能提供该信息来实现。 – mkl

相关问题