iText 7 pdfSweep和JPX编码的合成图像(MRC压缩PDF)

时间:2018-04-24 09:58:00

标签: pdf itext redaction

我有一个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压缩的好处会丢失,更不用说这样的整体速度了。转换然后编辑。

1 个答案:

答案 0 :(得分:3)

(iText开发人员)

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

这样,每个人都会受益,而且此更改也会自动包含在iText中。

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

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

  • 处理所有图片
  • 将它们转换为其他格式(如果需要)
  • 将修改后的文档投放到pdfSweep

更详细(第1步和第2步)

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