How to add a checkbox in word document via apache poi

Viewed 241

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);
0 Answers
Related