2013-05-15 75 views
6

如何使用Java確定PDF頁面是包含文本還是純圖片?確定PDF頁面是包含文本還是純圖片

我搜索了很多論壇和網站,但我還找不到答案。

是否可以從PDF中提取文本,以瞭解頁面是否爲格式圖片或文本?

PdfReader reader = new PdfReader(INPUTFILE); 
     PrintWriter out = new PrintWriter(new FileOutputStream(OUTPUTFILE));    
     for (int i = 1; i <= reader.getNumberOfPages(); i++) { 
     // here I want to test the structure of the page !!!! if it's possible       
     out.println(PdfTextExtractor.getTextFromPage(reader, i)); 
     } 
+1

這看起來很相關。也許你需要在這裏得到賞金 – Coffee

+1

謝謝Adel先生,我希望如此:) –

回答

6

有沒有防水的方式來做你想做的。

文本可以以不同的方式出現在PDF文件中。例如:可以使用圖形狀態操作符而不是使用文本狀態來繪製所有的字形。 (對不起,如果這對你聽起來像是中文,但我可以向你保證它是正確的PDF語言。)

如果一個特別的解決方案覆蓋了最常見的情況並偶爾錯過一個外來PDF對於你來說,那麼你已經有了一個很好的第一個解決方法。

在您的代碼中,您循環遍歷所有頁面,並詢問iText頁面上是否有任何文本。這已經是一個很好的指示。

在內部,您的代碼使用的是接口RenderListener。 iText解析頁面的內容並觸發特定的實現中的方法。這是一個自定義實現的實現:MyTextRenderListener。此自定義實現用於ParsingHelloWorld示例中。

還有一個renderImage()方法(例如參見MyImageListener)。如果觸發此方法,則可以100%確定頁面中還有圖像,並且可以使用ImageRenderInfo對象獲取圖像的位置,寬度和高度(即:如果您知道如何解釋由getImageCTM()方法返回的Matrix)。

使用所有這些元素,您已經可以實現您所需要的很長一段路,但請注意,總是會有異國情調的PDF會逃離您的所有檢查。

+0

非常感謝你Mr Bruno Lowagie先生 –

相關問題