2

我正在开发一个 PDF Filler 应用程序,该应用程序将使用 Web 表单中的值填充 PDF 中的字段。我的代码适用于我拥有的旧 PDF,但使用 Adob​​e LiveCycle Designer 创建的新 PDF 似乎无法看到 PDF 中的字段。建议将 PDF 保存为“Adobe 静态 PDF 表单”,但这并没有解决问题。

这是我的代码:

        Doc doc = new Doc();
        doc.Read(Server.MapPath("~/pdfs/test.pdf"));

        foreach (Field field in doc.Form.Fields)
        {
            if (field.Name == "StreetAddress")
            {
                field.Value = StreetAddress.Text;
            }
        }

在我的代码中,doc.Form.Fields 仅包含 1 个字段,其名称为“form1[0]”,即使 PDF 中实际上有 7 个字段。

任何帮助将不胜感激。

4

1 回答 1

2

在大量使用代码之后,我已经找到了答案。使用 GetFieldNames() 函数获取字段名称数组,因为这将返回所有字段,无论级别如何。有了这个,您可以循环通过名称创建字段的数组。我遇到的唯一其他问题是字段名称仍采用“form1[0].#pageSet[0].Page1[0].StreetAddress[0]”格式,但如果您使用 PartialName 属性,它将返回“StreetAddress [0]”,因此您只需删除最后 3 个字符即可获得正确的字段名称。

    string[] fieldNames = doc.Form.GetFieldNames();
    foreach (string fieldName in fieldNames)
    {
      Field field = doc.Form[fieldName];
      if(field.PartialName.Substring(0, field.PartialName.Length - 3).ToLower().Equals("streetaddress"))
      {
        field.Value = "whatever value you want";
      }
   }
于 2012-06-07T14:27:18.273 回答