0

PDFbox (C#) を使用して PDF フォームからラジオ ボタンの値を取得する方法

Java の場合:

     doc = PDDocument.load("C:\\Users\\347702\\Desktop\\sample_form.pdf");
            List pages = doc.getDocumentCatalog().getAllPages();
            PDAcroForm form = doc.getDocumentCatalog().getAcroForm();
            List FieldTypes =  form.getFields();
            PDField pdfFields;

            for (int i = 0; i <  FieldTypes.size(); i++) {

              pdfFields = (PDField) ((List) FieldTypes).get(i);
              if (pdfFields instanceof PDRadioCollection) 
                 {
                    String iAsString = Integer.toString(k);
                    System.out.println(iAsString);
                    type = "RadioButton";
                    System.out.println("Radio Button" + "   "
                            + pdfFields.getFullyQualifiedName() + "  ");

                    List kids = pdfFields.getKids();
                    for (Object kid : kids) {
                          if (kid instanceof PDCheckbox) {
                          PDCheckbox checkbox = (PDCheckbox) kid;
                          String Name = checkbox.getOnValue();
                          System.out.println(Name);
                          }
                    }

上記の Java コードは正常に動作しています (ラジオボタンの子を正常に返します) が、同じロジックが c# で実装されている場合、期待どおりに動作しません。

以下は私のC#コードです:

                else if (pdfFields is PDRadioCollection)
                {
                    System.Console.WriteLine("Radio Button" + "   "
                            + pdfFields.getFullyQualifiedName() + "  ");

                  List kids = pdfFields.getKids();
                    System.Console.WriteLine(kids);

                   for (int w = 0; w < kids.size(); w++)
                   {
                       kids.get(w);
                       System.Console.WriteLine(kids.get(w));  ---- > Return null 

                       System.Console.WriteLine(kids.get(w).ToString()); -- > Return null
                   }  

                } 

これで助けてもらえますか ありがとう

4

1 に答える 1

0

ついに機能しました: ここにあります:: C#: IEnumerable でケースを入力する必要があります:

                else if (pdfFields is PDRadioCollection)
                {
                    System.Console.WriteLine("Radio Button" + "   "
                            + pdfFields.getFullyQualifiedName() + "  ");

                    System.Collections.IEnumerable kids = (System.Collections.IEnumerable)pdfFields.getKids();
                    System.Console.WriteLine(kids);

                    foreach (object kid in kids)
                    {
                        PDCheckbox checkbox = (PDCheckbox)kid;
                         checkbox.check();
                    }
于 2013-02-18T11:17:56.863 に答える