我试图从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图像的图像为空。
从具有PNG后缀的PDXObjectImage获取BufferedImage的正确方法是什么?
我也尝试过:
BufferedImage image = ImageIO.read(((PDPixelMap)imageObject).getPDStream().createInputStream());
但是图像再次为空。
我正在使用org.apache.pdfbox版本1.8.11。
答案 0 :(得分:1)
最后转移到PDFBox的2.0版本,然后明确警告我没有安装jbig2解码器并解决了在maven中添加以下依赖项的问题。
<dependency>
<groupId>com.levigo.jbig2</groupId>
<artifactId>levigo-jbig2-imageio</artifactId>
<version>1.6.5</version>
</dependency>
@TilmanHausherr谢谢。