【问题标题】:form field collection is null in pdf after saving using iTextSharp使用 iTextSharp 保存后,pdf 中的表单字段集合为空
【发布时间】:2015-08-12 18:28:54
【问题描述】:

我在以下下载位置有两个 PDF 表格 - PDF Documents

这些是同一个文件,唯一的例外是版本 A2 是通过在 Acrobat Pro DC 中打开版本 A、单击表单顶部的复选框(或填写任何字段)然后另存为来创建的。

我正在使用此代码:

                PdfReader reader = new PdfReader(HttpContext.Current.Server.MapPath("~/documents/Appendix-A.pdf"));
                var form = reader.AcroFields;
                var fields = form.Fields;

当我使用附录 A.pdf 时,字段集合已正确填写。 当我使用附录-A2.pdf 时,字段集合为空。

如何从填写的表格(Appendix-A2.pdf)中获取字段和值?

注意:我注意到即使上面链接中两个表单的预览也不一样。

【问题讨论】:

  • 看起来保存文件正在改变字段的结构,它们将进入 XfaForm 属性。通过使用加载 XML,我越来越近了。 var xform = new XfaForm(reader); var xdoc = xform.DomDocument; var new_doc = new XmlDocument(); new_doc.LoadXml(xdoc.OuterXml);
  • 我没有时间深入讨论这个问题,但是您的原始表单启用了 Adob​​e 使用权限,并且当您保存 PDF 时,它会执行一些疯狂的幕后操作。看到这个checking for usage rights
  • 我无法删除使用权限,因为这是人们将上传到我的应用程序中的外部表单。看起来从 XfaForm XML 中提取数据将是要采取的路线。

标签: c# asp.net pdf itextsharp


【解决方案1】:

这些字段将进入阅读器的 XfaForm 属性。我所要做的就是从那里获取 XML,然后解析以找到我想要的数据字段。

这篇文章很有帮助。 How to get a list of the fields in an XFA form?

数据位于<xfa:datasets><xfa:data> 节点中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多