PDFBox Рендеринг Jpeg2000 и JBIG2
Я хочу преобразовать каждую страницу PDF в изображение (например, снимок экрана), а затем загрузить это изображение в службу хранения.
private void getImageBytes(PDDocument document, int pageIndex, int dpi, ConcurrentHashMap<String, byte[]> imgsToUpload, String imgKey) throws IOException {
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bim = pdfRenderer.renderImageWithDPI(pageIndex, dpi, ImageType.RGB);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bim, "png", os); // import javax.imageio.ImageIO;
os.flush();
os.close();
imgsToUpload.put(imgKey, os.toByteArray());
}
Я импортировал jbig2-imageio
добавив этот фрагмент в pom.xml
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jbig2-imageio</artifactId>
<version>3.0.3</version>
</dependency>
но все же сгенерированные изображения пусты. и эта ошибка регистрируется:Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed
Итак, что я пропустил?, я предположил, что добавление зависимости устранит эту ошибку.
следует ли мне использовать pdfbox-tools.imageIo вместо java.imageio
PS: Я новичок в Java, так что это может быть конфигурация??
1 ответ
Вам необходимо добавить эти зависимости в свой файл pom, чтобы решить проблему.
<dependency>
<groupId>com.g`enter code here`ithub.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>
https://pdfbox.apache.org/2.0/dependencies.html#optional-components