【问题标题】:Get BufferedImage from png PDXObjectImage从 png PDXObjectImage 中获取 BufferedImage
【发布时间】:2016-07-14 08:06:52
【问题描述】:

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

【问题讨论】:

  • 如果您收到任何日志消息?也许你必须安装 jbig2 解码器。顺便说一句,最新版本是 2.0.2。
  • @TilmanHausherr 我没有收到任何错误或警告,imageObject.getRGBImage() 只是返回 null。
  • 那么请分享PDF。
  • 只要确保您有 JAI 插件可以解压该图像并继续使用 getRGBImage()。顺便说一句,如果你能上传 PDF 会很有帮助。

标签: java bufferedimage pdfbox


【解决方案1】:

终于移到 PDFBox 2.0 版然后得到一个明确的警告,我没有安装 jbig2 解码器并解决了在 maven 中添加以下依赖项的问题。

<dependency>
    <groupId>com.levigo.jbig2</groupId>
    <artifactId>levigo-jbig2-imageio</artifactId>
    <version>1.6.5</version>
</dependency>

@TilmanHausherr 谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 2012-07-11
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多