如何解决“无法读取JPEG2000图像:未安装Java高级图像(JAI)图像I/O工具”问题

10
我正在建立一个Java项目,使用PDFBox从PDF中获取图像。由于我在使用Tika-app的其他功能,所以我决定使用tika-app-1.20.jar内置的PDFBox。
我已经尝试过在Tika-app之前包含jai-imageio-core-1.3.1.jar,因为Tika-app中已经打包了这个jar文件。我也尝试过仅使用Tika-app jar文件。
以下是抛出错误的行:
``` PDXObject object = resources.getXObject(cosName); ```
以下是错误的日志追踪:
org.apache.pdfbox.filter.MissingImageReaderException: Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed
    at org.apache.pdfbox.filter.Filter.findImageReader(Filter.java:163)
    at org.apache.pdfbox.filter.JPXFilter.readJPX(JPXFilter.java:115)
    at org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:64)
    at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:77)
    at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:175)
    at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:163)
    at org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:236)
    at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.<init>(PDImageXObject.java:140)
    at org.apache.pdfbox.pdmodel.graphics.PDXObject.createXObject(PDXObject.java:70)
    at org.apache.pdfbox.pdmodel.PDResources.getXObject(PDResources.java:426)

但我很确定我的tika中有jai-imageio-core,但运行代码时它却不可见。


2
安装工具?嗯,出了点问题。 - user207421
2个回答

29

实际上,我也遇到了这个错误,但PDFBox文档在这里提到了它。您需要将以下依赖项添加到您的pom.xml文件中:

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-core</artifactId>
    <version>1.4.0</version>
</dependency>

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-jpeg2000</artifactId>
    <version>1.3.0</version>
</dependency>

<!-- Optional for you ; just to avoid the same error with JBIG2 images -->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>jbig2-imageio</artifactId>
    <version>3.0.3</version>
</dependency>

如果您正在使用Gradle:

dependencies {
    implementation 'com.github.jai-imageio:jai-imageio-core:1.4.0'
    implementation 'com.github.jai-imageio:jai-imageio-jpeg2000:1.3.0'

    // Optional for you ; just to avoid the same error with JBIG2 images
    implementation 'org.apache.pdfbox:jbig2-imageio:3.0.3'
}

1
这是Maven Central的链接:https://search.maven.org/artifact/com.github.jai-imageio/jai-imageio-jpeg2000/1.4.0/bundle - Jonathan Hult

1

有时需要额外的jar包jai-imageio-jpeg2000来支持jp2k图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接