您如何获得现有的iTextSharp AcroField操作?

时间:2015-02-21 15:14:27

标签: c# pdf itextsharp itext

我正在使用C#。 我一直在寻找并寻找一种方法来做到这一点。 我在使用PDF格式字段的ADDING操作中找到了plenty of examples iTextSharp,但没有关于回读现有行动的信息。

我已经存在PDF格式的表单验证(alpha,字母数字等) 我正在创建一个填写这些表单的程序,我需要以编程方式 检查哪些字符有效(通常使用我所见过的JavaScript和REGEX。)

有没有办法获取此JavaScript,以便我的程序可以验证输入?

1 个答案:

答案 0 :(得分:1)

原来我需要阅读完整的XFA流来获取有关表单字段的所有详细信息。

来自this answer this user的代码将获得完整的XFA流:

public string ReadXfa(PdfReader reader) {
  XfaForm xfa = new XfaForm(reader);
  XmlDocument doc = xfa.DomDocument;
  reader.Close();

  if (!string.IsNullOrEmpty(doc.DocumentElement.NamespaceURI)) {
    doc.DocumentElement.SetAttribute("xmlns", "");
    XmlDocument new_doc = new XmlDocument();
    new_doc.LoadXml(doc.OuterXml);
    doc = new_doc;
  }

  var sb = new StringBuilder(4000);
  var Xsettings = new XmlWriterSettings() {Indent = true};
  using (var writer = XmlWriter.Create(sb, Xsettings)) {
    doc.WriteTo(writer);
  }
  return sb.ToString();    
}