[itext7] Adding form controls (single-line text box, multi-line text box, radio box, check box, drop-down box, button) for itext7 to operate PDF documents

This article mainly introduces the addition of form controls (single-line text box, multi-line text box, radio box, check box, drop-down box, button) for itext7 to operate PDF documents.

Table of contents

1. itext operates PDF form

1.1. Add a single-line text box

1.2, add a multi-line text box

1.3. Add a radio button

1.4. Add checkbox

1.5. Add drop-down box

1.6. Add button


1. itext operates PDF form

In itext, the form is abstracted into a PdfAcroForm class, which is a form object, and various form components can be added to this form object, such as: adding a single-line text box, adding a multi-line text box, adding radio buttons, adding multiple-choice buttons, adding drop-down boxes, adding buttons, etc. itext provides us with some classes for creating forms, such as: PdfTextFormField, PdfFormField , these classes provide a lot of static methods, you can create various types of form controls, PdfTextFormField class is generally used to create form controls containing text data, PdfFormField class is generally used to create controls for a single field or field group.

Let's introduce how itext7 creates various form controls.

1.1. Add a single-line text box

To create a single-line text box, use the [PdfTextFormField.createText()] method. This method needs to specify the display position of the form, the field name of the form field, and the PDF document object.

package itext.demo.basic.form;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfTextFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**
 * @version 1.0.0
 * @Date: 2023/7/19 15:40
 * @Author ZhuYouBin
 * @Description: 添加表单
 */
public class SingleRowText {
    public static void main(String[] args) throws Exception {
        // 创建PDF文档
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\form.pdf"));
        Document document = new Document(pdfDocument);
        document.add(new Paragraph("aaa"));

        // 创建表单对象
        PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDocument, true);
        // 创建单行文本框对象
        Rectangle rectangle = new Rectangle(10, 20, 200, 20); // 显示位置
        PdfTextFormField username = PdfTextFormField.createText(pdfDocument, rectangle, "username");
        // 文本框添加到表单里面
        acroForm.addField(username);

        // 关闭文档
        document.close();
        pdfDocument.close();
    }
}

1.2, add a multi-line text box

The multi-line text box can be realized by using the [PdfTextFormField.createMultilineText()] method. In fact, the [PdfTextFormField.createText()] method has a parameter to set whether to create a multi-line text box.

package itext.demo.basic.form;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfTextFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**
 * @version 1.0.0
 * @Date: 2023/7/19 15:40
 * @Author ZhuYouBin
 * @Description: 添加表单
 */
public class MultipleRowText {
    public static void main(String[] args) throws Exception {
        // 创建PDF文档
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\form.pdf"));
        Document document = new Document(pdfDocument);
        document.add(new Paragraph("aaa"));

        // 创建表单对象
        PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDocument, true);
        // 创建多行文本框对象
        Rectangle rectangle = new Rectangle(10, 20, 200, 100); // 显示位置
        PdfTextFormField username = PdfTextFormField.createMultilineText(pdfDocument, rectangle, "username", "");
        // 文本框添加到表单里面
        acroForm.addField(username);

        // 关闭文档
        document.close();
        pdfDocument.close();
    }
}

1.3. Add a radio button

The radio button is created using the [PdfFormField.createRadioButton()] method. There can be multiple radio buttons. These radio buttons can form a group. Only one of the radio buttons in this group can be selected. The radio button group is created using the [PdfFormField.createRadioGroup()] method.

package itext.demo.basic.form;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfButtonFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**
 * @version 1.0.0
 * @Date: 2023/7/19 15:40
 * @Author ZhuYouBin
 * @Description: 添加表单
 */
public class RadioGroup {
    public static void main(String[] args) throws Exception {
        // 创建PDF文档
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\form.pdf"));
        Document document = new Document(pdfDocument);
        document.add(new Paragraph("aaa"));

        // 创建表单对象
        PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDocument, true);
        // 创建单选组对象
        PdfButtonFormField radioGroup = PdfFormField.createRadioGroup(pdfDocument, "radioGroup", "B");
        // 创建单选框对象
        PdfFormField radioButton1 = PdfFormField.createRadioButton(pdfDocument, new Rectangle(10, 20, 15, 15), radioGroup, "A");
        PdfFormField radioButton2 = PdfFormField.createRadioButton(pdfDocument, new Rectangle(40, 20, 15, 15), radioGroup, "B");
        PdfFormField radioButton3 = PdfFormField.createRadioButton(pdfDocument, new Rectangle(70, 20, 15, 15), radioGroup, "C");
        PdfFormField radioButton4 = PdfFormField.createRadioButton(pdfDocument, new Rectangle(100, 20, 15, 15), radioGroup, "D");
        // 单选框添加到表单里面
        acroForm.addField(radioGroup);

        // 关闭文档
        document.close();
        pdfDocument.close();
    }
}

The running results are as follows:

1.4. Add checkbox

The check box is created using the [PdfFormField.createCheckBox()] method. The check box can set the icon style displayed after being selected. There are 6 optional styles, namely: five-pointed star, dot, square, tick, cross, and diamond.

package itext.demo.basic.form;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfButtonFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**
 * @version 1.0.0
 * @Date: 2023/7/19 15:40
 * @Author ZhuYouBin
 * @Description: 添加表单
 */
public class CheckBox {
    public static void main(String[] args) throws Exception {
        // 创建PDF文档
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\form.pdf"));
        Document document = new Document(pdfDocument);
        document.add(new Paragraph("aaa"));

        // 创建表单对象
        PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDocument, true);
        // 创建复选框对象,选中取值是 Yes ,未选中取值是:Off
        PdfButtonFormField checkBox1 = PdfFormField.createCheckBox(pdfDocument, new Rectangle(10, 20, 15, 15), "checkBox1", "Yes", PdfFormField.TYPE_CHECK);
        PdfButtonFormField checkBox2 = PdfFormField.createCheckBox(pdfDocument, new Rectangle(40, 20, 15, 15), "checkBox2", "Yes", PdfFormField.TYPE_STAR);
        PdfButtonFormField checkBox3 = PdfFormField.createCheckBox(pdfDocument, new Rectangle(70, 20, 15, 15), "checkBox3", "Yes", PdfFormField.TYPE_CIRCLE);
        PdfButtonFormField checkBox4 = PdfFormField.createCheckBox(pdfDocument, new Rectangle(100, 20, 15, 15), "checkBox4", "Yes", PdfFormField.TYPE_DIAMOND);
        PdfButtonFormField checkBox5 = PdfFormField.createCheckBox(pdfDocument, new Rectangle(130, 20, 15, 15), "checkBox5", "Yes", PdfFormField.TYPE_SQUARE);
        PdfButtonFormField checkBox6 = PdfFormField.createCheckBox(pdfDocument, new Rectangle(160, 20, 15, 15), "checkBox6", "Yes", PdfFormField.TYPE_CROSS);
        // 复选框添加到表单里面
        acroForm.addField(checkBox1);
        acroForm.addField(checkBox2);
        acroForm.addField(checkBox3);
        acroForm.addField(checkBox4);
        acroForm.addField(checkBox5);
        acroForm.addField(checkBox6);

        // 关闭文档
        document.close();
        pdfDocument.close();
    }
}

The running results are as follows:

1.5. Add drop-down box

The drop-down box is created using the [PdfFormField.createComboBox()] method, and the drop-down box receives an array as an optional data set.

package itext.demo.basic.form;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfChoiceFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**
 * @version 1.0.0
 * @Date: 2023/7/19 15:40
 * @Author ZhuYouBin
 * @Description: 添加表单
 */
public class ComboBox {
    public static void main(String[] args) throws Exception {
        // 创建PDF文档
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\form.pdf"));
        Document document = new Document(pdfDocument);
        document.add(new Paragraph("aaa"));

        // 创建表单对象
        PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDocument, true);
        // 创建下拉选中框对象,选中取值是 Yes ,未选中取值是:Off
        String[] options = {"A", "B", "C", "D"};
        PdfChoiceFormField comboBox = PdfFormField.createComboBox(pdfDocument, new Rectangle(10, 20, 50, 20), "selection", "C", options);
        // 下拉选中框添加到表单里面
        acroForm.addField(comboBox);

        // 关闭文档
        document.close();
        pdfDocument.close();
    }
}

The running results are as follows:

1.6. Add button

Buttons are created using the [PdfFormField.createPushButton()] method.

package itext.demo.basic.form;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfButtonFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

/**
 * @version 1.0.0
 * @Date: 2023/7/19 15:40
 * @Author ZhuYouBin
 * @Description: 添加表单
 */
public class Button {
    public static void main(String[] args) throws Exception {
        // 创建PDF文档
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\form.pdf"));
        Document document = new Document(pdfDocument);
        document.add(new Paragraph("aaa"));

        // 创建表单对象
        PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDocument, true);
        // 创建按钮对象
        PdfButtonFormField pushButton = PdfFormField.createPushButton(pdfDocument, new Rectangle(10, 20, 50, 20), "button", "submit");
        // 添加到表单里面
        acroForm.addField(pushButton);

        // 关闭文档
        document.close();
        pdfDocument.close();
    }
}

The running results are as follows:

At this point, the introduction of itext to operate PDF forms is over.

In summary, this article is over, mainly introducing itext7 to add form controls (single-line text box, multi-line text box, radio box, check box, drop-down box, button) to operate PDF documents.

Guess you like

Origin blog.csdn.net/qq_39826207/article/details/131840538