I'm creating a word document via apache poi. I want to add a checkbox in my word document but I didn't make it. I tried this code
run3.getCTR().getFldCharArray(0).addNewFfData().addNewCheckBox();
But it gives me this error
Exception in thread "main" java.lang.IndexOutOfBoundsException
at org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTRImpl.getFldCharArray(Unknown Source)
at createSoluminaForm.main(createSoluminaForm.java:45)
Is there anyone who made it before?
UPDATE
I solved the issue with below method
static void insertFormField(XWPFParagraph paragraph, String type, CTOnOff onOff) {
XWPFRun run = paragraph.createRun();
run.getCTR().addNewFldChar().setFldCharType(STFldCharType.BEGIN);
if ("FORMTEXT".equals(type)) {
run.getCTR().getFldCharArray(0).addNewFfData().addNewTextInput();
}
else if ("FORMCHECKBOX".equals(type)) {
CTFFCheckBox checkbox = run.getCTR().getFldCharArray(0).addNewFfData().addNewCheckBox();
checkbox.setChecked(onOff);
}
run = paragraph.createRun();
run.getCTR().addNewInstrText().setStringValue(type);
if ("FORMTEXT".equals(type)) {
run = paragraph.createRun();
run.getCTR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
for (int i = 0; i < 5; i++) {
run = paragraph.createRun();
//run.setText(" "); // Unicode Character 'EN SPACE' (U+2002)
run.setText("\u2002");
}
}
run = paragraph.createRun();
run.getCTR().addNewFldChar().setFldCharType(STFldCharType.END);
}
Usage of the method
//CheckBox checked
CTOnOff onOff = CTOnOff.Factory.newInstance();
onOff.setVal(STOnOff.ON);
//CheckBox unchecked
CTOnOff onOff1 = CTOnOff.Factory.newInstance();
onOff1.setVal(STOnOff.OFF);
//checkboxs must controlled if-else block
insertFormField(parag2, "FORMCHECKBOX", onOff);