用Java从扫描的PDF文档中获取像素数据

用Java从扫描的PDF文档中获取像素数据,java,pdf,pdfbox,pdfclown,Java,Pdf,Pdfbox,Pdfclown,我有一些文件,我已经用Xerox扫描仪数字化成PDF文件。使用Java,我试图从中提取RGB像素数据,用于图像识别应用程序。从零开始开发这一功能有点超出我的水平,因此我依赖第三方库进行PDF处理 到目前为止,我已经尝试了两个不同的库;PdfBox和PdfClown 使用PdfBox,我尝试使用convertToImage()方法获取BufferedImage。使用PdfClown,我试图使用呈现程序类中的呈现(页面,大小)方法来获取缓冲图像。在这两种情况下,返回的图像都是空白的。所有像素均为白色

我有一些文件,我已经用Xerox扫描仪数字化成PDF文件。使用Java,我试图从中提取RGB像素数据,用于图像识别应用程序。从零开始开发这一功能有点超出我的水平,因此我依赖第三方库进行PDF处理

到目前为止,我已经尝试了两个不同的库;PdfBox和PdfClown

使用PdfBox,我尝试使用
convertToImage()
方法获取
BufferedImage
。使用PdfClown,我试图使用
呈现程序
类中的
呈现(页面,大小)
方法来获取
缓冲图像
。在这两种情况下,返回的图像都是空白的。所有像素均为白色[
(r、g、b)=(255255)
]

我已经能够从其他pdf文档中获取非空白的BuffereImage,这些文档不是源于扫描,因此我怀疑问题在于扫描文档的格式

以下是一个示例PFD文件:


有人知道如何解决这个问题吗?或者你能提供一种不同的方法吗?

通过安装JBIG2插件解决了这个问题。现在一切都很好。非常感谢您的帮助。

告诉您我的方法有效,然后回来告诉我,在您的情况下,它不起作用,这是一种浪费——那么您在寻找什么呢?对图像进行故障排除?也许您的代码有一些特殊之处,请共享一个示例PDF。(并非所有扫描仪都将图像放入PDF中…)PDFBox 2.0中的PDPage类似乎不包含convertToImage()方法。关于如何使用2.0版本@TilmanHausherr实现这一点,你有什么建议吗?如果使用jbig2插件,你的文件工作正常-这就是为什么你在1.8中得到这个日志输出:“找不到ImageIO插件来解码jbig2编码的数据流”。@Torben我希望你能够解决这个问题。如果是,请删除问题或自己回答,以避免“孤儿”。如果没有,请在此处“ping”我,或者在PDFBox用户邮件列表中重新询问您的问题。然而,由于PDF规范的复杂性,对java来说是一个障碍。祝你好运