我的要求是在PDF底部添加时间戳。我使用itext 5.4.3版本编辑PDF并能够成功添加时间戳。但是这个过程会抛出一些PDF的java.lang.ArrayIndexOutOfBoundsException异常。附上下面的异常堆栈跟踪。
at com.itextpdf.text.pdf.PdfEncryption.createInfoId(PdfEncryption.java:558)
at com.itextpdf.text.pdf.PdfStamperImp.close(PdfStamperImp.java:383)
at com.itextpdf.text.pdf.PdfStamperImp.close(PdfStamperImp.java:337)
at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:206)
我做了分析,发现这个问题正在发生,因为pdf中存在坏预告片,itext期待16位预告片数据,而我的pdf只有4位或有些10位。附上下面的预告片信息。
有效预告片: / ID AA8280F47FC1BF4DCD5C88E6A493092D
无效预告片: / ID B2DE387A
我们已经要求供应商重新扫描PDF,但看起来大多数PDF都有类似的预告片。无论如何使用具有无效预告片的itext来编辑PDF?请帮忙。
任何更新版本都可以解决问题吗?
答案 0 :(得分:0)
这可以通过5.4.3重现,但不适用于当前版本5.5.7。
这可能是修复它的提交:e28f688033 (这个修复似乎有点矫枉过正,因为只要现有的ID不是16字节,它就会创建新的ID,这不是必需的。)