我需要使用 iText 7 将 XFA 表单字段值输入到支持 LiveCycle 阅读器的 PDF 中。我可以成功地做到这一点,但是如果我没有在追加模式下打开PDF,那么Adobe签名似乎被破坏了,并且用户无法进一步编辑表单值并再次保存。如果我在追加模式下使用 iText 7 打开 PDF 并更改 XFA 表单字段值,则启用阅读器的签名不会损坏,但更改的值不会显示在表单上。这似乎是iText 7的错误,并且可能使用附加模式更改XFA表单字段值。有没有人成功地做到这一点?
在 iText7
中以追加模式填写 XFA 表单时存在错误。这已在 7.0.2
(和 7.0.2-SNAPSHOT
年)中修复。
在追加模式下填写表单,您需要以下代码段:
PdfDocument pdfdoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST),
new StampingProperties().useAppendMode());
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfdoc, true);
XfaForm xfa = form.getXfaForm();
xfa.fillXfaForm(new FileInputStream(XML));
xfa.write(pdfdoc);
pdfdoc.close();