【发布时间】: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); -
我没有时间深入讨论这个问题,但是您的原始表单启用了 Adobe 使用权限,并且当您保存 PDF 时,它会执行一些疯狂的幕后操作。看到这个checking for usage rights
-
我无法删除使用权限,因为这是人们将上传到我的应用程序中的外部表单。看起来从 XfaForm XML 中提取数据将是要采取的路线。
标签: c# asp.net pdf itextsharp