【itext7】itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)

这篇文章,主要介绍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();}
}

运行结果如下所示:

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 ,未选中取值是:OffPdfButtonFormField 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();}
}

运行结果如下所示:

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 ,未选中取值是:OffString[] 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();}
}

运行结果如下所示:

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

运行结果如下所示:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB安全测试通常要考虑的测试点

1、问题:没有被验证的输入 测试方法: 数据类型(字符串,整型,实数,等) 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值(枚举型&a…

k8s使用helm部署Harbor镜像仓库并启用SSL

1、部署nfs存储工具 参照:https://zhaoll.blog.csdn.net/article/details/128155767 2、部署helm 有多种安装方式,根据自己的k8s版本选择合适的helm版本 参考:https://blog.csdn.net/qq_30614345/article/details/131669319 3、部署Harbo…

0成本搭建自己的云数据库

第一步,租免费的云服务器 www.aliyun.com 阿里云的,可以免费租三个月 进入主页后选择云服务器ESC 选择这款,点击试用就行 第二步,配置服务器 在配置服务器系统的时候选择centos,省事,别选ubuntu&#x…

java项目之人才公寓管理系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的人才公寓管理系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框架&…

iOS pod EaseIMKit库如何放在本地使用

在使用环信EaseIMKit库的时候,发现有些开发者需要改动库中的一些逻辑,或者有UI上的一些调整,如果直接去改pods里面的库,在之后的库版本升级会把之前修改过的代码覆盖掉,这个时候我们就需要pod指向本地的库,…

【数据结构】---时间复杂度与空间复杂度

时间复杂度与空间复杂度 1.📉 时间复杂度📌1.1 时间复杂度的概念1.2 大O的渐进表示法 🏰空间复杂度📃例题分析1.案例(常数阶)2.案例(线性阶)3.案例:(平方阶&a…

css元素定位:通过元素的标签或者元素的id、class属性定位

前言 大部分人在使用selenium定位元素时,用的是xpath元素定位方式,因为xpath元素定位方式基本能解决定位的需求。xpath元素定位方式更直观,更好理解一些。 css元素定位方式往往被忽略掉了,其实css元素定位方式也有它的价值&…

【数据库 - 用户权限管理】(简略)

目录 一、概述 二、用户权限类型 1.ALL PRIVILEGES 2.CREATE 3.DROP 4.SELECT 5.INSERT 6.UPDATE 7.DELETE 8.INDEX 9.ALTER 10.CREATE VIEW和CREATE ROUTINE 11.SHUTDOWN 12GRANT OPTION 三、语句格式 1.用户赋权 2.权限删除 3.用户删除 一、概述 数据库用…

Redis多级缓存

文章目录 多级缓存背景JVM进程缓存Caffeine案例分析安装MySQL导入SQL Lua语法变量与循环数据类型声明变量循环 函数与条件控制函数条件控制 实现多级缓存安装OpenResty安装opm工具目录结构配置Nginx的环境变量运行启动 快速入门反向代理流程OpenResty监听请求编写item.lua 请求…

基于深度学习的高精度交通信号灯检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度交通信号灯检测识别可用于日常生活中检测与定位交通信号灯目标,利用深度学习算法可实现图片、视频、摄像头等方式的交通信号灯目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…

站在读者角度:10个技巧写出有价值的文章

站在读者的角度,以下是10个写出有价值的文章的技巧: 1.确定你的目标读者:在开始写作之前,确定你的目标读者是谁,这有助于你更好地针对他们的需求和兴趣来写作。 2.了解你的读者:通过调查、研究和互动&…

LeetCode每日一题-接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

Spring中事务失效的8中场景

1. 数据库引擎不支持事务 这里以 MySQL为例,MyISAM引擎是不支持事务操作的,一般要支持事务都会使用InnoDB引擎,根据MySQL 的官方文档说明,从MySQL 5.5.5 开始的默认存储引擎是 InnoDB,之前默认的都是 MyISAM&#xff…

Python in VS Code 2023年7月发布|Mypy 扩展预览版与调试扩展、Pylance 本地化及其他

排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 7 月发布! 此版本包括以下更新: Mypy 扩展预览版预览版中的调试扩展Pylance 本地化使用 Pylance 的第三方库的索引持久性即将弃用 Python 3.7 支…

分享5款有点冷门的实用派软件

​ 分享5款冷门但值得下载的Windows软件,个个都是实用,你可能一个都没见过,但是 我觉得你用过之后可能就再也离不开了。 系统监控——XMeters ​ XMeters是一个系统监控软件,可以让你在任务栏上显示各种系统信息,如C…

C# List 详解三

目录 11.Equals(Object) 12.Exists(Predicate) 13.Find(Predicate) 14.FindAll(Predicate) 15.FindIndex(Int32, Int32, Predicate) 16.FindIndex(Int32, Predicate) 17.FindIndex(Predicate) C# List 详解一 1.Add(T),2.AddRa…

探秘MySQL底层架构:设计与实现流程

前言 Mysql,作为一款优秀而广泛使用的数据库管理系统,对于众多Java工程师来说,几乎是日常开发中必不可少的一环。无论是存储海量数据,还是高效地检索和管理数据,Mysql都扮演着重要的角色。然而,除了使用My…

【JAVA】 String 方法附件

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 String 方法 String 方法 char charAt(int index)返回指定索引处的 char 值。int compareTo(Object o) 把这个字符串和另一个对象比较。 int compareTo(String anotherString)按…

基于Jquery EasyUI JSZip FileSaver的简单使用

一、前言 在前端的项目开发中 &#xff0c;下载文件压缩包是很重要的一个环节&#xff0c;那么怎么下载多个文件并压缩成ZIP下载呢&#xff1f; 二、使用步骤 1、引用库 <script type"text/javascript" src"~/Scripts/comm/jszip.min.js" ></…

C# WPF项目创建(基于VS 2019介绍)

1.打开VS&#xff0c;选择《创建新项目》 2.选择《WPF应用》&#xff0c;这里设计两个有.NET Framework框架和.NET core 框架&#xff0c;如图所示&#xff1a; 区别&#xff1a; .NET Framework 框架只能在windows下使用 .NET core 框架支持linux 下运行 3. 项目名称根据需…