如何获取XFA表单中的字段列表?我正在尝试获取XFA表单中所有字段的简单列表。我正在使用这段代码:privatevoidListFieldNames(){stringpdfTemplate=@"C:ProjectsiTextSharpSReport.pdf";MemoryStreamm=newMemoryStream();//为表单添加标题this.Text+="-"+pdfTemplate;//基于PDF模板文档创建一个新的PDF阅读器PdfReaderpdfReader=newPdfReader(pdfTemplate);PdfStamperpdfStamper=newPdfStamper(pdfReader,m);AcroFieldsformFields=pdfStamper.AcroFields;Xfa;StringBuildersb=newStringBuilder();sb.Append(xfa.XfaPresent?"XFA表单":"AcroForm");sb.Append(Environment.NewLine);foreach(form.Fields.Keys中的字符串键){sb.Append(key);sb.Append(Environment.NewLine);txtFields.Text=sb.ToString();}txtFields.Text=sb.ToString();但我得到的只是XFA表单,而不是任何字段。知道我做错了什么吗?提前致谢您已经从我的书“iTextinAction”的第8章中获取了代码示例。该代码示例的结果与我在第273页上写的一致:使用此表单作为资源运行清单8.18将得到以下结果:AcroForm如果您的问题是我知道我做错了什么?嗯,答案很简单:您在第270页停止阅读,或者您在没有阅读随附文档的情况下使用了代码示例。如何解决这个问题呢?阅读文档!如果您的问题是为什么我没有获得有关这些字段的任何信息?(这不是您的问题,但让我们假设它是),答案是:您使用代码来检索AcroForm字段,但您的表单不包含任何此类字段。您的表单是纯XFA表单,这意味着所有字段信息仅存储为XML!假设您现在想知道:我如何提取该XML?然后你应该去你找到你复制/粘贴的例子的地方。可能就在这里:http://itextpdf.com/examples/iia.php?id=1id=164或在这里:http://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Chapter08/XfaMovie.cs或什至在这里:http://kuujinbo。信息/iTextInAction2Ed/index.aspx?ch=Chapter08&e=XfaMovie此片段将返回完整的XFA流:publicstringReadXfa(PdfReaderreader){XfaFormxfa=newXfaForm(reader);XmlDocumentdoc=xfa.DomDocument;读者。关闭();如果(!string.IsNullOrEmpty(doc.DocumentElement.NamespaceURI)){doc.DocumentElement.SetAttribute("xmlns","");XmlDocumentnew_doc=newXmlDocument();new_doc.LoadXml(doc.OuterXml);文档=新文档;字符串生成器(4000);varXsettings=newXmlWriterSettings(){Indent=true};使用(varwriter=XmlWriter.Create(sb,Xsettings)){doc.WriteTo(writer);}返回sb.ToString();}现在查找标签;它将有一个子标签(如果表单为空,则可能为空)和子标签。在dataDescription标记内,您会发现类似XSD的内容。这就是您需要知道表中的字段是什么的全部内容。我可以不断地猜测这样的问题:我如何填写这样的表格?通过使用fillXfaForm()方法;我怎样才能压平这样的表格?通过使用XFAWorker(这是一个写在iTextSharp之上的闭源库),但是让我们把这些问题留给另一个线程;-)以上是C#学习教程:如何获取XFA表单中的字段列表?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
