jai - jpedal jpg2000 错误

标签 jai jpeg2000 jpedal

我使用 jpedal 将 pdf 转换为图像。这对于大多数 pdf 文件都适用,但对于某些包含 jpeg2000 的 pdf 文件,我继续收到以下错误:

 java.lang.RuntimeException: JPeg 2000 Images needs the VM parameter -Dorg.jpedal.jai=true switch turned on
    at org.jpedal.parser.PdfStreamDecoder.decodeStreamIntoObjects(Unknown Source)
    at org.jpedal.parser.PdfStreamDecoder.decodePageContent(Unknown Source)
    at org.jpedal.PDFtoImageConvertor.convert(Unknown Source)
    at org.jpedal.PdfDecoder.getPageAsImage(Unknown Source)
    at org.jpedal.PdfDecoder.getPageAsImage(Unknown Source)
    at com.....

我已经在 J​​AVA_OPTS、tomcat 的运行配置以及程序代码中设置了 JVM 参数,使用:

System.setProperty("org.jpedal.jai", "true");
PdfDecoder decode_pdf = new PdfDecoder(true);
FontMappings.setFontReplacements();
decode_pdf.openPdfArray(pdf_file);

另外 3 个 JAI 库也在我的构建路径上。

所以我不知道我还需要做什么?

我的完整转换代码是:

List<BufferedImage> images = new LinkedList<BufferedImage>();           
System.setProperty("org.jpedal.jai", "true");
PdfDecoder decode_pdf = new PdfDecoder(true);
FontMappings.setFontReplacements();
decode_pdf.openPdfArray(pdf_file);
decode_pdf.setExtractionMode(0, 1f); //do not save images
for (int i = 1; i<= decode_pdf.getPageCount(); i++)
{
  images.add(decode_pdf.getPageAsImage(i));
}   
decode_pdf.closePdfFile();

有什么建议吗?

最佳答案

  1. 为 jpedal 激活 jai

    System.setProperty("org.jpedal.jai", "true");

  2. 更好的解决方案(比 Mark Stephens 博客的文章)是重新注册 提供者,因为这只需要完成一次:

    IIORegistry 注册表 = IIORegistry.getDefaultInstance();
    registry.registerServiceProvider(new com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageWriterSpi()); registry.registerServiceProvider(new com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderSpi());

当然,JAI 库需要位于类路径中才能正常工作。

关于jai - jpedal jpg2000 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521378/

相关文章:

Java ImageIO-ext TIF 文件读取时损坏

java - 将 ImageOutputStream 转换为 byte[]

java - 使用 AI 旋转灰度图像增加对比度

java - 将 JPEG 2000 转换为 JPEG

java - 使用 Jpedal 渲染包含视觉签名的 PDF 文档

java - 如何在java中解码JPX图像?

java - Java 32 位对 Win(任何)64 位的影响?

java - 如何更改 PDF 文件中图像的过滤器

java - 设置类路径

java - 为什么 PDFBox 不使用横向打印文档?