2013-05-15 42 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先生 –

相关问题