2016-01-21 60 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

相關問題