从png PDXObjectImage获取BufferedImage

时间:2016-07-14 08:06:53

标签: java bufferedimage pdfbox

我试图从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。

1 个答案:

答案 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谢谢。