【发布时间】: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