我正在尝试从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谢谢。

10-02 04:57