Java 在iText上填写复选框

Java 在iText上填写复选框,java,pdf,itext,Java,Pdf,Itext,我正在尝试使用iText修改现有的PDF。我的代码目前可以很好地编辑文本字段,但我无法让它勾选或取消勾选复选框 PdfReader reader = new PdfReader(INPUTFILE); int n = reader.getNumberOfPages(); PdfStamper filledOutForm = new PdfStamper(reader, new FileOutputS

我正在尝试使用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));
正如我所说,您需要使用以下方法检查可用状态:

String[] states = fields.getAppearanceStates("checkbox");
然后根据此
字符串[]中的选项设置状态

filledOutForm.setFormFlattening(true); 

通常在我的一些复选框上返回正确的值,无论出于何种原因,返回的都是空数组。查看Acrobat Pro中的表单,我发现要发送到setField的正确字符串在字段属性的“选项”选项卡中称为“导出值”。您也可以在此处进行更改。

虽然此代码片段可以解决问题,但确实有助于提高您的文章质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。太棒了——非常有用。
fields.getAppearanceStates("checkbox");