首页 文章

使用itext标记填充的pdf时出错

提问于
浏览
2

我正在使用iText填写pdf . 这个pdf包含一个xfa,我通过xml文件填写此表单 . 填写表单后,用户需要下载并手动签名 . 到目前为止,所有的一切都很好,每个字段填写正确 . 如果用户在文件上签名,则adobe reader会使用签名制作新的文件副本 .

但是当用户尝试签署该pdf时,它会产生以下错误,而新生成的带签名的文件不会保存数据,它会使所有字段为空 .

至少有一个签名有问题

当用户签名pdf adobe reader时,还会弹出签名验证

enter image description here

但如果我在不使用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();
            }   
}

这是错误消息的屏幕截图

enter image description here

请帮我解决这个问题 .

1 回答

  • 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数据时才允许我签署文档 .

    我希望它能帮助面临类似问题的人 .

相关问题