iTextのチェックボックスを埋める

私はiTextで既存のPDFを変更しようとしています。私のコードは現在、テキストフィールドをうまく編集していますが、チェックボックスをチェックしたり、チェックを外すことはできません。

                PdfReader reader = new PdfReader(INPUTFILE);
                int n = reader.getNumberOfPages();

                PdfStamper filledOutForm = new PdfStamper(reader, new FileOutputStream("WrittenForm.pdf"));

                AcroFields fields = filledOutForm.getAcroFields();

                //not working
                fields.setField("checkbox", "On");

                //working
                fields.setField("textfield1", "infinite road");
                fields.setField("textfield2", "jayboy");


                filledOutForm.close();

何か案は?

解決済み:

 String states[] = fields.getAppearanceStates("checkbox");

//prints array values - returns 'yes, no'

 System.out.println(Arrays.toString(states));
4

3 答え

ここをクリックして、次のように使用可能な状態を確認する必要があります。

String[] states = fields.getAppearanceStates("checkbox");

And then set the state according to the options in this String[]

9
追加された
素晴らしいです - 非常に便利です。
追加された 著者 John Lockwood,
filledOutForm.setFormFlattening(true); 
2
追加された
このコードスニペットで問題を解決できるかもしれませんが、説明を含むことは本当に改善に役立ちますあなたの投稿の質。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。
追加された 著者 Bono,

fields.getAppearanceStates("checkbox");

何らかの理由で私のチェックボックスのいくつかに空の配列が返され、通常は正しい値が返されます。 Acrobat Proのフォームを見ると、setFieldに送信する適切な文字列は、フィールドプロパティの[オプション]タブの[エクスポート値]と呼ばれています。あなたもそれを変更することができます。

0
追加された