0

我有一个 MRC 压缩 PDF(图像是 JPX 编码的),由于抛出 ImageReadException,我无法使用 iText 7 pdfSweep 对其进行编辑。

Caused by: org.apache.commons.imaging.ImageReadException: Can't parse this format.
at org.apache.commons.imaging.Imaging.getImageParser(Imaging.java:731)
at org.apache.commons.imaging.Imaging.getImageInfo(Imaging.java:703)
at org.apache.commons.imaging.Imaging.getImageInfo(Imaging.java:637)
at com.itextpdf.pdfcleanup.PdfCleanUpFilter.processImage(PdfCleanUpFilter.java:343)
... 13 more

您知道此问题的任何解决方法或解决方案吗?一个明显的解决方法是将 PDF 中的 jp2 (jpx) 替换为其他一些图像格式,并对修改后的 PDF 执行编辑,但是,在这种情况下,MRC 压缩的好处就失去了,更不用说这样的整体速度了转换然后编辑。

4

1 回答 1

3

(此处为 iText 开发人员)

如您所见,iText 用于org.apache.commons处理图像。过去,我们在这个外部库中遇到了一些已知错误的问题。一个可能的解决方案是分叉org.apache.commons项目,实施修复,然后提交您的拉取请求。

这样,每个人都会受益,并且更改也将自动包含在内iText

当然,如果您是付费客户,那么通过 iText 支持板报告此问题可能会触发我们改为执行拉取请求。

至于解决方法,我认为您已经提出了适当的想法。

  • 处理所有图像
  • 将它们转换为不同的格式(如果需要)
  • 将修改后的文档输入pdfSweep

更详细(步骤 1 和 2)

使用 IEventListener 您可以获得BufferedImage给定资源的底层,然后您可以使用ByteArrayOutputStreamandImageIO将您的图像重新编码为标准 jpg 或 png。然后,您可以使用iText来更改此特定资源的字典条目。

于 2018-04-24T11:08:18.810 回答