gpt4 book ai didi

java - pdfbox.util.ImageIOUtil.writeImage 问题

转载 作者:行者123 更新时间:2023-12-01 20:52:14 25 4
gpt4 key购买 nike


这里 PDFbox 出现问题。

java.lang.NullPointerException
at org.apache.pdfbox.util.ImageIOUtil.writeImage(ImageIOUtil.java:197)
at org.apache.pdfbox.pdmodel.graphics.xobject.PDJpeg.createImageStream(PDJpeg.java:190)
at org.apache.pdfbox.pdmodel.graphics.xobject.PDJpeg.<init>(PDJpeg.java:150)

我们当前的设置是 2 台服务器,每台服务器有 2 个 JVM,运行在 Websphere 8.5Java 6 上。

当我们重新启动 JVM 时,问题似乎得到了解决,但几个小时后我们遇到了相同的异常。
该应用程序正在使用PDFBox v1.8.8

这是一段代码:

ImageIO.setUseCache(false);
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
document.addPage(page);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedImage convertedFile = tiffToBufferedImageJAI(file);
PDXObjectImage img = new PDJpeg(document, convertedFile);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawXObject(img, 0, 0, 550, 800);
contentStream.close();

document.save(baos);
document.close();
baos.flush();

return baos.toByteArray();

最佳答案

问题是下面的 ImageWriter 已注册但无法正确启动:

com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriterSpi

因此,当调用 ImageWriterIterator.next() 时,spi.createWriterInstance() 抛出静默 IOException 并返回 null:

public ImageWriter next() {
ImageWriterSpi spi = null;
try {
spi = (ImageWriterSpi)iter.next();
return spi.createWriterInstance();
} catch (IOException e) {
// Deregister the spi in this case, but only as a writerSpi
theRegistry.deregisterServiceProvider(spi, ImageWriterSpi.class);
}
return null;
}

spi.createWriterInstance() 失败的原因是:

java.lang.NoClassDefFoundError: com/sun/medialib/codec/jpeg/Encoder

在 JVM 启动中添加 -Dcom.sun.media.jai.disableMediaLib=true 使得有问题的 ImageWriter 不再被注册。

关于java - pdfbox.util.ImageIOUtil.writeImage 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43096992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com