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

时间:2016-09-14 07:21:08

标签: c# pdf itext

我正在使用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 个答案:

答案 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数据时才允许我签署文档。

我希望它能帮助遇到类似问题的人。