我正在使用iText填写pdf。这个pdf包含一个xfa,我通过xml文件填写此表单。填写表单后,用户需要下载并手动签名。到目前为止,所有的一切都很好,每个领域的形式填写正确。如果用户签署文件,adobe reader会使用签名制作新的文件副本。
但是当用户尝试签署该pdf时,它会产生以下错误,并且新生成的带签名的文件不会保存数据,它会使所有字段为空。
至少有一个签名有问题
当用户签名pdf adobe reader时,还会弹出签名验证
但如果我在不使用itext的情况下手动填写相同的pdf,则允许我成功签署pdf
这是我用来填充pdf和xml数据的代码:
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();
}
}
以下是错误消息的屏幕截图
请帮我解决这个问题。
答案 0 :(得分:1)
最后我解决了这个问题
这个问题的原因是我更新了整个xml文档以填充xfa,但是当我只更新数据部分而不是整个xml时它没有任何错误。
我不知道它真正创造的区别在于这个类似的问题“Bruno Lowagie”声明你可以使用完整的xml替换,或者你只能更改数据部分。
How can I set XFA data in a static XFA form in iTextSharp and get it to save?
但是对我来说,只有当我替换数据而不是整个xml数据时才允许我签署文档。
我希望它能帮助遇到类似问题的人。