我正在使用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();
}
}
这是错误消息的屏幕截图
请帮我解决这个问题 .
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数据时才允许我签署文档 .
我希望它能帮助面临类似问题的人 .