在经过认证的PDF表格中填写图像字段而不会破坏认证

时间:2016-03-10 09:30:56

标签: java pdf itext

我必须用itext填写经过认证的PDF表格。此表单是使用Adobe Life Cycle构建的,其中包含图像字段(PushButtonField)。

使用Adobe Reader,我可以填写所有类型的字段,而不会破坏认证签名,包括图像字段。

使用itext,填充其他类型的字段工作得很好,但是当我尝试填充现有的图像字段时,它会破坏表单认证。我尝试了不同的方法,没有成功。

方式1:

AcroFields form = pdfStamper.getAcroFields();
form.setField(fieldName, b64EncodedJpegByteArray)

使用此代码,图像显示在Adobe Reader中,但证书签名已损坏。

方式2:

AcroFields form = pdfStamper.getAcroFields();
PushbuttonField pb = form.getNewPushbuttonFromField(fieldName);
pb.setImage(Image.getInstance(jpegByteArray);
form.replacePushbuttonField(fieldName, pb.getField());

有了这个,认证也被打破,图像不再显示在Adobe Reader中了......

有没有人见过这个?

1 个答案:

答案 0 :(得分:0)

我不再使用iText了,但我熟悉PDF不允许的更改而不会破坏认证和最后一行...

form.replacePushbuttonField(fieldName, pb.getField());

......可能走得太远了。您只能更改字段值和/或外观,而不能替换更改AcroForm字典的字段。

您需要弄清楚如何使用iText更改按钮的默认或“正常”外观。