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