Java 创建PDF表单域

2025-10-18 13:41:37

1、步骤1:在Java程序中新建一个文件夹可命名为Lib。并将产品包中的2个jar文件复制到新建的文件夹下。

Java 创建PDF表单域

2、步骤2:复制文件后,添加到引用类库:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。完成引用。

Java 创建PDF表单域

1、import java.awt.*;

import java.awt.geom.Point2D;

import java.awt.geom.Rectangle2D;

import com.spire.pdf.FileFormat;

import com.spire.pdf.PdfDocument;

import com.spire.pdf.PdfPageBase;

import com.spire.pdf.fields.*;

import com.spire.pdf.graphics.*;

public class AddFormFieldsToPdf {

public static void main(String[] args) throws Exception {

        //创建PdfDocument对象,并添加页面

        PdfDocument doc = new PdfDocument();        

    PdfPageBase page = doc.getPages().add();

    //初始化位置变量

    float baseX = 100;

    float baseY = 0;

        //创建画刷对象

        PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));

        PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.black));

        

        //创建TrueType字体

        PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,10),true); 

        //添加文本框

        String text = "姓名:";//添加文本

        page.getCanvas().drawString(text, font, brush1, new Point2D.Float(0, baseY));//在PDF中绘制文字

        Rectangle2D.Float tbxBounds = new Rectangle2D.Float(baseX, baseY , 150, 15);//创建Rectangle2D对象

        PdfTextBoxField textBox = new PdfTextBoxField(page, "TextBox");//创建文本框对象

        textBox.setBounds(tbxBounds);//设置文本框的Bounds

        textBox.setText("刘兴");//填充文本框

        textBox.setFont(font);//应用文本框的字体

        doc.getForm().getFields().add(textBox);//添加文本框到PDF域的集合

        baseY +=25;

        //添加复选框

        page.getCanvas().drawString("所在院系:", font, brush1, new Point2D.Float(0, baseY));

        java.awt.geom.Rectangle2D.Float rec1 = new java.awt.geom.Rectangle2D.Float(baseX, baseY, 15, 15);

        PdfCheckBoxField checkBoxField = new PdfCheckBoxField(page, "CheckBox1");//创建第一个复选框对象

        checkBoxField.setBounds(rec1);

        checkBoxField.setChecked(false);//填充复选框

        page.getCanvas().drawString("经管系", font, brush2, new Point2D.Float(baseX + 20, baseY));

        java.awt.geom.Rectangle2D.Float rec2 = new java.awt.geom.Rectangle2D.Float(baseX + 70, baseY, 15, 15);

        PdfCheckBoxField checkBoxField1 = new PdfCheckBoxField(page, "CheckBox2");//创建第二个复选框对象

        checkBoxField1.setBounds(rec2);

        checkBoxField1.setChecked(true);//填充复选框

        page.getCanvas().drawString("创新班", font,  brush2, new Point2D.Float(baseX+90, baseY));      

        doc.getForm().getFields().add(checkBoxField);//添加复选框到PDF

        baseY += 25;

        //添加列表框

        page.getCanvas().drawString("录取批次:", font, brush1, new Point2D.Float(0, baseY));

        java.awt.geom.Rectangle2D.Float rec = new java.awt.geom.Rectangle2D.Float(baseX, baseY, 150, 50);

        PdfListBoxField listBoxField = new PdfListBoxField(page, "ListBox");//创建列表框对象

        listBoxField.getItems().add(new PdfListFieldItem("第一批次", "item1"));

        listBoxField.getItems().add(new PdfListFieldItem("第二批次", "item2"));

        listBoxField.getItems().add(new PdfListFieldItem("第三批次", "item3"));;

        listBoxField.setBounds(rec);

        listBoxField.setFont(font);

        listBoxField.setSelectedIndex(0);//填充列表框

        doc.getForm().getFields().add(listBoxField);//添加列表框到PDF

        baseY += 60;

        //添加单选按钮

        page.getCanvas().drawString("招收方式:", font, brush1, new Point2D.Float(0, baseY));

        PdfRadioButtonListField radioButtonListField = new PdfRadioButtonListField(page, "Radio");//创建单选按钮对象

        PdfRadioButtonListItem radioItem1 = new PdfRadioButtonListItem("Item1");//创建第一个单选按钮

        radioItem1.setBounds(new Rectangle2D.Float(baseX, baseY, 15, 15));

        page.getCanvas().drawString("全日制", font, brush2, new Point2D.Float(baseX + 20, baseY));

        PdfRadioButtonListItem radioItem2 = new PdfRadioButtonListItem("Item2");//创建第二个单选按钮

        radioItem2.setBounds(new Rectangle2D.Float(baseX + 70, baseY, 15, 15));

        page.getCanvas().drawString("成人教育", font, brush2, new Point2D.Float(baseX + 90, baseY));

        radioButtonListField.getItems().add(radioItem1);

        radioButtonListField.getItems().add(radioItem2);

        radioButtonListField.setSelectedIndex(0);//选择填充第一个单选按钮

        doc.getForm().getFields().add(radioButtonListField);//添加单选按钮到PDF

        baseY += 25;

        //添加组合框

        page.getCanvas().drawString("最高学历:", font, brush1, new Point2D.Float(0, baseY));

        Rectangle2D.Float cmbBounds = new Rectangle2D.Float(baseX, baseY, 150, 15);//创建cmbBounds对象

        PdfComboBoxField comboBoxField = new PdfComboBoxField(page, "ComboBox");//创建comboBoxField对象

        comboBoxField.setBounds(cmbBounds);

        comboBoxField.getItems().add(new PdfListFieldItem("博士", "item1"));

        comboBoxField.getItems().add(new PdfListFieldItem("硕士", "itme2"));

        comboBoxField.getItems().add(new PdfListFieldItem("本科", "item3"));

        comboBoxField.getItems().add(new PdfListFieldItem("大专", "item4"));

        comboBoxField.setSelectedIndex(0);      

        comboBoxField.setFont(font);

        doc.getForm().getFields().add(comboBoxField);//添加组合框到PDF

        baseY += 25;

        //添加签名域

        page.getCanvas().drawString("本人签字确认\n以上信息属实:", font, brush1, new Point2D.Float(0, baseY));

        PdfSignatureField sgnField= new PdfSignatureField(page,"sgnField");//创建sgnField对象

        Rectangle2D.Float sgnBounds = new Rectangle2D.Float(baseX, baseY, 150, 80);//创建sgnBounds对象

        sgnField.setBounds(sgnBounds);          

        doc.getForm().getFields().add(sgnField);//添加sgnField到PDF

        baseY += 90;

        //添加按钮

        page.getCanvas().drawString("", font, brush1, new Point2D.Float(0, baseY));

        Rectangle2D.Float btnBounds = new Rectangle2D.Float(baseX, baseY, 50, 15);//创建btnBounds对象

        PdfButtonField buttonField = new PdfButtonField(page, "Button");//创建buttonField对象

        buttonField.setBounds(btnBounds);

        buttonField.setText("提交");//设置按钮显示文本

        buttonField.setFont(font);

        doc.getForm().getFields().add(buttonField);//添加按钮到PDF  

        

        //保存文档

        doc.saveToFile("result.pdf", FileFormat.PDF);              

}

}

2、运行程序后,生成文档。表单域创建效果如下:

Java 创建PDF表单域

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢