我正在尝试从PDXObjectImage获取一个具有png后缀的BufferedImage:
PDResources pdResources = pdPage.getResources();
Map<String, PDXObject> xobjects = (Map<String, PDXObject>) pdResources.getXObjects();
if (xobjects != null) {
for (String key : xobjects.keySet()) {
PDXObject xobject = xobjects.get(key);
if (xobject instanceof PDXObjectImage) {
PDXObjectImage imageObject = (PDXObjectImage) xobject;
String suffix = imageObject.getSuffix();
if (suffix != null) {
BufferedImage image = imageObject.getRGBImage();
}
}
}
}
此代码在具有jpg PDXObjectImages的情况下可以正常工作,但对于png图像,图像为null。
从具有PNG后缀的PDXObjectImage获取BufferedImage的正确方法是什么?
我也尝试过:
BufferedImage image = ImageIO.read(((PDPixelMap)imageObject).getPDStream().createInputStream());
但是图像再次为空。
我正在使用org.apache.pdfbox版本1.8.11。
最佳答案
最终移至PDFBox的2.0版,然后得到一个明确的警告:我尚未安装jbig2解码器,并解决了在maven中添加以下依赖项的问题。
<dependency>
<groupId>com.levigo.jbig2</groupId>
<artifactId>levigo-jbig2-imageio</artifactId>
<version>1.6.5</version>
</dependency>
@TilmanHausherr谢谢。