这篇文章,主要介绍itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)。 

目录

一、itext操作PDF表单

1.1、添加单行文本框

1.2、添加多行文本框

1.3、添加单选框

1.4、添加复选框

1.5、添加下拉框

1.6、添加按钮


一、itext操作PDF表单

itext中将表单抽象成一个 PdfAcroForm 类,这是一个表单对象,在这个表单对象里面就可以添加各种表单组件,例如:添加单行文本框、添加多行文本框、添加单选按钮、添加多选按钮、添加下拉框、添加按钮等。itext中给我们提供了一些创建表单的类,例如:PdfTextFormField、PdfFormField,这些类中提供了很多的静态方法,可以创建各种类型的表单控件,PdfTextFormField类一般用于创建包含文本数据的表单控件,PdfFormField类一般用于创建单个字段或者字段组的控件。

下面就介绍一下itext7如何创建各种表单控件。

1.1、添加单行文本框

创建单行文本框是使用【PdfTextFormField.createText()】方法,这个方法需要指定表单的显示位置,表单域字段名称,PDF文档对象。

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、添加多行文本框

多行文本框可以使用【PdfTextFormField.createMultilineText()】方法实现,其实【PdfTextFormField.createText()】方法有一个参数也可以设置是否创建多行文本框。

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、添加单选框

单选框使用【PdfFormField.createRadioButton()】方法创建,单选框可以有多个,这些单选框可以构成一个组,这一组中的单选框只能选中其中一个,单选框组采用【PdfFormField.createRadioGroup()】方法进行创建。

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();
    }
}

运行结果如下所示:

Android adapter 选中列表项_pdf

1.4、添加复选框

复选框使用【PdfFormField.createCheckBox()】方法进行创建,复选框可以设置选中之后显示的图标样式,有6种可选样式,分别是:五角星、圆点、方块、勾号、叉号、菱形。

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();
    }
}

运行结果如下所示:

Android adapter 选中列表项_java_02

1.5、添加下拉框

下拉框使用【PdfFormField.createComboBox()】方法进行创建,下拉框接收一个数组作为可选数据集合。

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();
    }
}

运行结果如下所示:

Android adapter 选中列表项_java_03

1.6、添加按钮

按钮使用【PdfFormField.createPushButton()】方法进行创建。

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();
    }
}

运行结果如下所示:

Android adapter 选中列表项_java_04

到此,itext操作PDF表单就介绍完啦。

综上,这篇文章结束了,主要介绍itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)。