我有一个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压缩的好处会丢失,更不用说这样的整体速度了。转换然后编辑。
答案 0 :(得分:3)
(iText开发人员)
如您所见,iText使用org.apache.commons
来处理图像。
在过去,我们在此外部库中遇到了一些已知错误的问题。
可能的解决方案是分叉org.apache.commons
项目,实施修复,并提交拉取请求。
这样,每个人都会受益,而且此更改也会自动包含在iText
中。
当然,如果您是付费客户,那么通过iText支持板报告此问题可能会触发我们执行拉取请求。
至于解决方法,我认为你已经提出了适当的想法。
pdfSweep
更详细(第1步和第2步)
使用IEventListener,您可以获取给定资源的基础BufferedImage
,然后您可以使用ByteArrayOutputStream
和ImageIO
将图像重新编码为标准jpg或png。然后,您可以使用iText
更改此特定资源的字典条目。