【发布时间】:2016-09-14 07:21:08
【问题描述】:
我正在使用 iText 来填充 pdf。这个pdf包含一个xfa,我通过一个xml文件填写这个表格。填写表格后,用户需要下载并手动签名。到目前为止一切正常,表格中的每个字段都正确填写。如果用户对文件 adobe reader 签名,则制作带有签名的文件的新副本。
但是当用户尝试签署该 pdf 文件时,会出现以下错误,并且新生成的带有签名的文件不保存数据,这会使所有字段为空。
至少一个签名有问题
当用户签署pdf adobe reader时也会弹出签名验证
但是如果我不使用 itext 手动填写相同的 pdf,它可以让我成功签署 pdf
这是我用来用 xml 数据填充 pdf 的代码:
public static byte[] FillXfaForm(byte[] byteArray, String xmlFilePath)
{
PdfReader reader = new PdfReader(byteArray);
using (MemoryStream ms = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(reader, ms,'\0',true))
{
stamper.Writer.CloseStream = false;
stamper.AcroFields.Xfa.FillXfaForm(xmlFilePath);
}
if(File.Exists(xmlFilePath))
{
File.Delete(xmlFilePath);
}
return ms.ToArray();
}
}
这是错误信息的屏幕截图
请帮我解决这个问题。
【问题讨论】:
-
请分享有问题的 PDF 和 XML,以便重现问题。
-
抱歉,由于某些安全原因,我无法提供 pdf
-
@mkl 如果你愿意,我可以给你更多细节
-
我要做的第一件事是分析 Adobe 说文档已被更改或损坏的原因。因为有时 PDF 不会被更改为文件,而是包含一些细节,这使得 Adobe 更改了文件的内部表示。
-
顺便说一下,我看到你在附加模式下使用
PdfStamper。您这样做是因为它已经在之前您更改 XFA 表单信息吗?