2

PDFのフィールドにWebフォームの値を入力するPDFフィラーアプリケーションに取り組んでいます。私のコードは、私が持っている古いPDFで正常に機能しますが、Adobe LiveCycle Designerで作成された新しいPDFは、PDFのフィールドを表示できないようです。PDFを「AdobeStaticPDFForm」として保存することが提案されましたが、これで問題は解決しませんでした。

これが私のコードです:

        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;
            }
        }

私のコードでは、実際にはPDFに7つのフィールドがありますが、doc.Form.Fieldsには名前に「form1[0]」という値を持つフィールドが1つだけ含まれています。

どんな助けでも大歓迎です。

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 に答える