gpt4 book ai didi

java - PDFBox 无法从 PDF 文件页面生成图像

转载 作者:行者123 更新时间:2023-12-01 17:53:05 25 4
gpt4 key购买 nike

我已经使用 PDFBox 将 pdf 文件拆分为图像有一段时间了,但更新到 2.0.19 后,我开始遇到意外的异常。

这是异常的堆栈跟踪:

java.lang.ArrayIndexOutOfBoundsException: 3
at java.awt.color.ICC_ColorSpace.toRGB(ICC_ColorSpace.java:191)
at org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.toRGB(PDICCBased.java:350)
at org.apache.pdfbox.rendering.PageDrawer.getPaint(PageDrawer.java:335)
at org.apache.pdfbox.rendering.PageDrawer.getNonStrokingPaint(PageDrawer.java:708)
at org.apache.pdfbox.rendering.PageDrawer.fillPath(PageDrawer.java:808)
at org.apache.pdfbox.contentstream.operator.graphics.FillEvenOddRule.process(FillEvenOddRule.java:37)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:875)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:509)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:483)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:156)
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:269)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:321)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:243)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:203)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:190)

这是我用来分割文件的代码:


try (PDDocument document = PDDocument.load(new File("updated_test.pdf"))) {
PDPageTree pdPages = document.getDocumentCatalog().getPages();
PDFRenderer pdfRenderer = new PDFRenderer(document);

int page = 0;
for (PDPage pdPage : pdPages) {
String fileName = "demo" + page + ".png";

File tempImg = new File(fileName);

BufferedImage bim = pdfRenderer.renderImage(page);
ImageIOUtil.writeImage(bim, tempImg.getAbsolutePath(), 150);

page++;
}
} catch (Exception e) {
e.printStackTrace();
}

这是导致问题的实际文件: https://stackoverflowuploads.s3-us-west-2.amazonaws.com/updated_test.pdf

所有帮助、想法和建议将不胜感激,如果您对其他可以实现相同结果的解决方案/库有想法,这些也将非常有用。谢谢!

最佳答案

此问题已在 PDFBOX-4801 中修复并且快照构建可用 here在底部。

它将在 2.0.20 中发布,很可能在夏季发布(希望如此)。

原因是 CMYK ICC 配置文件字典中的/N 值 (3) 不正确。正确的值应该是 4。这会导致后面提到的异常。 corrected code检查 ICC 配置文件并更正 PCICCBased 对象的值。

关于java - PDFBox 无法从 PDF 文件页面生成图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60762748/

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