【问题标题】:Filling image field in a certified PDF form without breaking certification在认证的 PDF 表单中填写图像字段而不破坏认证
【发布时间】:2016-03-10 09:30:55
【问题描述】:

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

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

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

方式一:

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

使用此代码,图像在 Adob​​e Reader 中显示,但认证签名被破坏。

方式 2:

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

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

以前有人遇到过这种情况吗?

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

    我不再使用 iText,但我熟悉在不破坏认证和您的最后一行的情况下允许对 PDF 进行的更改...

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

    ...可能有点过头了。您只能更改字段值和/或外观,不能替换字段,这会更改 AcroForm 字典。

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

    【讨论】:

    • 这就是我想出来的,但我没有设法找到一种只更改图像而不替换整个按钮的方法......
    • 我不知道如何在 iText 中执行此操作,但在我使用的工具中设置各种按钮状态外观很简单。
    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2020-03-15
    相关资源
    最近更新 更多