Java 创建、填充PDF表单域
java itext acrofields字段用法

java itext acrofields字段用法iText是一种用于处理PDF文件的Java库,它允许开发人员在创建、修改和读取PDF文件时进行灵活的操作。
iText的AcroFields类提供了一种方便的方式来操作PDF表单中的字段,包括填充字段值、获取字段属性和校验字段。
AcroFields字段用法分为以下几个方面:1. 填充字段值:在PDF表单中,经常需要将特定的值填充到字段中,比如姓名、地址、日期等。
使用iText的AcroFields类,我们可以通过以下步骤来填充字段值:1.1 创建一个PdfReader对象,用于读取PDF文件。
```javaPdfReader reader = new PdfReader("input.pdf");```1.2 创建一个PdfStamper对象,用于写入数据到PDF文件中。
```javaPdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));```1.3 获取AcroFields对象,并使用setValue方法填充字段值。
```javaAcroFields fields = stamper.getAcroFields();fields.setField("name", "John Doe");fields.setField("address", "123 Street, City");```1.4 关闭PdfStamper对象,确保已经保存填充的字段值到PDF文件中。
```javastamper.close();```2. 获取字段属性:除了填充字段值,有时候也需要获取字段的一些属性信息,比如字段的类型、默认值、是否只读等。
使用iText的AcroFields类,我们可以通过以下方法获取字段的属性:```javaAcroFields fields = reader.getAcroFields();String type = fields.getFieldType("name");String defaultValue = fields.getField("name");boolean readOnly = fields.getFieldFlag("name", PdfFormField.FF_READ_ONLY);```getFieldType方法返回字段的类型,可以是文本、按钮、选择框等。
java中pdfcell单元格格式

在Java中,使用iText库是处理PDF文档的一种常见方式,包括创建、编辑和提取PDF内容。
PdfPCell是iText库中的一个类,用于表示PDF文档中的表格单元格。
你可以使用PdfPCell 来设置单元格的格式,包括字体、颜色、对齐方式、边框等。
以下是一些常见的PdfPCell单元格格式设置的示例:设置字体和字号:javaFont font = new Font(FontFamily.HELVETICA, 12, Font.BOLD);PdfPCell cell = new PdfPCell(new Phrase("Hello, World!", font));设置文本颜色:javaFont coloredFont = new Font(FontFamily.HELVETICA, 12, Font.NORMAL, BaseColor.RED); PdfPCell coloredCell = new PdfPCell(new Phrase("Red Text", coloredFont));设置背景色:javaPdfPCell cellWithBackground = new PdfPCell(new Phrase("Cell with Background")); cellWithBackground.setBackgroundColor(BaseColor.LIGHT_GRAY);设置对齐方式:javaPdfPCell alignedCell = new PdfPCell(new Phrase("Aligned Text"));alignedCell.setHorizontalAlignment(Element.ALIGN_CENTER); // 水平居中alignedCell.setVerticalAlignment(Element.ALIGN_MIDDLE); // 垂直居中设置边框:javaPdfPCell cellWithBorder = new PdfPCell(new Phrase("Cell with Border"));cellWithBorder.setBorder(Rectangle.BOX); // 设置所有边框cellWithBorder.setBorderColor(BaseColor.BLACK); // 设置边框颜色cellWithBorder.setBorderWidth(1f); // 设置边框宽度设置单元格内容的换行和间距:javaParagraph p = new Paragraph("This is a long text that should wrap inside the cell.");p.setAlignment(Element.ALIGN_JUSTIFIED); // 两端对齐PdfPCell cellWithParagraph = new PdfPCell(p);cellWithParagraph.setNoWrap(false); // 允许内容换行cellWithParagraph.setPaddingTop(10f); // 设置上内边距cellWithParagraph.setPaddingBottom(10f); // 设置下内边距注意:在使用iText库时,请确保你使用的版本是与你的项目兼容的,并且遵循相应的许可协议。
java pdfoptions 参数说明

PdfOptions是Apache PDFBox 库中的一个类,用于设置生成PDF 文档的选项。
这个类主要提供了一些静态的常量,用于配置生成的PDF 文档的各种属性。
以下是一些常用的PdfOptions参数及其说明:PageSize:定义PDF 文档的页面大小。
例如,PageSize.A4表示使用A4 大小的页面。
PageOrientation:定义PDF 文档的页面方向。
可以是PageOrientation.PORTRAIT(纵向)或NDSCAPE(横向)。
UserUnit:定义PDF 文档中的单位,通常是点(1英寸=72点)。
Compression:设置PDF 文档的压缩选项。
例如,Compression.DEFLATE表示使用Deflate 压缩算法。
Encryption:设置PDF 文档的加密选项。
例如,使用AES 加密算法,指定加密密钥等。
Printing:设置PDF 文档的打印选项。
例如,是否允许打印、修改或注释等。
Metadata:设置PDF 文档的元数据选项。
例如,添加标题、作者、关键字等元数据信息。
PageMode:设置PDF 文档的页面模式。
例如,E_NONE表示不使用任何页面模式。
ViewerPreferences:设置PDF 文档的查看器偏好选项。
例如,是否显示书签、页码等。
Language:设置PDF 文档的语言选项。
例如,Language.ENGLISH表示使用英文。
通过创建PdfOptions对象并设置相应的参数,可以自定义生成的PDF 文档的属性和行为。
具体使用时,需要根据实际需求选择适当的参数进行配置。
Java生成PDF文档(表格、列表、添加图片等)

Java⽣成PDF⽂档(表格、列表、添加图⽚等)1 import java.awt.Color;2 import java.io.FileOutputStream;3 import com.lowagie.text.Cell;4 import com.lowagie.text.Chapter;5 import com.lowagie.text.Document;6 import com.lowagie.text.Font;7 import com.lowagie.text.Image;8 import com.lowagie.text.List;9 import com.lowagie.text.ListItem;10 import com.lowagie.text.PageSize;11 import com.lowagie.text.Paragraph;12 import com.lowagie.text.Section;13 import com.lowagie.text.Table;14 import com.lowagie.text.pdf.BaseFont;15 import com.lowagie.text.pdf.PdfWriter;16 public class ITextDemo {17 public boolean iTextTest() {18 try {19 /** 实例化⽂档对象 */20 Document document = new Document(PageSize.A4, 50, 50, 50, 50);21 /** 创建 PdfWriter 对象 */22 PdfWriter.getInstance(document,// ⽂档对象的引⽤23 new FileOutputStream("d://ITextTest.pdf"));//⽂件的输出路径+⽂件的实际名称24 document.open();// 打开⽂档25 /** pdf⽂档中中⽂字体的设置,注意⼀定要添加iTextAsian.jar包 */26 BaseFont bfChinese = BaseFont.createFont("STSong-Light",27 "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);28 Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);//加⼊document:29 /** 向⽂档中添加内容,创建段落对象 */30 document.add(new Paragraph("First page of the document."));// Paragraph添加⽂本31 document.add(new Paragraph("我们是害⾍", FontChinese));32 /** 创建章节对象 */33 Paragraph title1 = new Paragraph("第⼀章", FontChinese);34 Chapter chapter1 = new Chapter(title1, 1);35 chapter1.setNumberDepth(0);36 /** 创建章节中的⼩节 */37 Paragraph title11 = new Paragraph("表格的添加", FontChinese);38 Section section1 = chapter1.addSection(title11);39 /** 创建段落并添加到⼩节中 */40 Paragraph someSectionText = new Paragraph("下⾯展⽰的为3 X 2 表格.",41 FontChinese);42 section1.add(someSectionText);43 /** 创建表格对象(包含⾏列矩阵的表格) */44 Table t = new Table(3, 2);// 2⾏3列45 t.setBorderColor(new Color(220, 255, 100));46 t.setPadding(5);47 t.setSpacing(5);48 t.setBorderWidth(1);49 Cell c1 = new Cell(new Paragraph("第⼀格", FontChinese));50 t.addCell(c1);51 c1 = new Cell("Header2");52 t.addCell(c1);53 c1 = new Cell("Header3");54 t.addCell(c1);55 // 第⼆⾏开始不需要new Cell()56 t.addCell("1.1");57 t.addCell("1.2");58 t.addCell("1.3");59 section1.add(t);60 /** 创建章节中的⼩节 */61 Paragraph title13 = new Paragraph("列表的添加", FontChinese);62 Section section3 = chapter1.addSection(title13);63 /** 创建段落并添加到⼩节中 */64 Paragraph someSectionText3 = new Paragraph("下⾯展⽰的为列表.", FontChinese);65 section3.add(someSectionText3);66 /** 创建列表并添加到pdf⽂档中 */67 List l = new List(true, true, 10);// 第⼀个参数为true,则创建⼀个要⾃⾏编号的列表,68 // 如果为false则不进⾏⾃⾏编号69 l.add(new ListItem("First item of list"));70 l.add(new ListItem("第⼆个列表", FontChinese));71 section3.add(l);72 document.add(chapter1);73 /** 创建章节对象 */74 Paragraph title2 = new Paragraph("第⼆章", FontChinese);75 Chapter chapter2 = new Chapter(title2, 1);76 chapter2.setNumberDepth(0);77 /** 创建章节中的⼩节 */78 Paragraph title12 = new Paragraph("png图⽚添加", FontChinese);79 Section section2 = chapter2.addSection(title12);80 /** 添加图⽚ */81 section2.add(new Paragraph("图⽚添加: 饼图", FontChinese));82 Image png = Image.getInstance("D:/pie.png");//图⽚的地址83 section2.add(png);84 document.add(chapter2);85 document.close();86 return true;87 } catch (Exception e2) {88 System.out.println(e2.getMessage());89 }90 return false;91 }92 public static void main(String args[]) {93 System.out.println(new ITextDemo().iTextTest());94 }95 }。
java根据模板生成pdf文件并导出

java根据模板生成pdf文件并导出首先你的制作一个pdf模板:1.先用word做出模板界面2.文件另存为pdf格式文件3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可以通过我的百度云下载,链接:/s/1pL2klzt)如果无法下载可以联系博主。
4.点击右边的"准备表单"按钮,选择"测试.pdf"选择开始进去到编辑页面,打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框(其实无需任何操作,一般情况下不需要修改什么东西,至少我没有修改哦。
如果你想修改fill1等信息,可以进行修改)5.做完上面的工作后,直接"另存为"将pdf存储就可以****************************************************************** ***********以上部分是制作pdf模板操作,上述完成后,就开始通过程序来根据pdf模板生成pdf文件了,上java程序:1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖[html] view plain copy print?<!--https:///artifact/com.itextpdf/itextpdf--> <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency> [html] view plain copy print?<!-- https:///artifact/com.itextpdf/itext-asian --> <span style="white-space:pre;"></span><dependency> <spanstyle="white-space:pre;"> </span><groupId>com.itextpdf</groupId> <span style="white-space:pre;"> </span><artifactId>itext-asian</artifactId> <span style="white-space:pre;"> </span><version>5.2.0</version> <spanstyle="white-space:pre;"></span></dependency> 2.下面就是生成pdf代码了[java] view plain copy print?importjava.io.ByteArrayOutputStream; importjava.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.Document; importcom.itextpdf.text.DocumentException; importcom.itextpdf.text.pdf.AcroFields; importcom.itextpdf.text.pdf.PdfCopy; importcom.itextpdf.text.pdf.PdfImportedPage; importcom.itextpdf.text.pdf.PdfReader; importcom.itextpdf.text.pdf.PdfStamper; public class Snippet { // 利用模板生成pdf public static void fillTemplate() { // 模板路径String templatePath = "E:/测试3.pdf"; // 生成的新文件路径String newPDFPath = "E:/ceshi.pdf"; PdfReader reader; FileOutputStream out; ByteArrayOutputStream bos; PdfStamper stamper; try { out = new FileOutputStream(newPDFPath);// 输出流reader = new PdfReader(templatePath);// 读取pdf模板bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);AcroFields form = stamper.getAcroFields();String[] str = { "123456789", "TOP__ONE", "男","1991-01-01", "130222111133338888", "河北省保定市" };int i = 0; java.util.Iterator<String> it = form.getFields().keySet().iterator(); while (it.hasNext()) { String name =it.next().toString();System.out.println(name);form.setField(name, str[i++]); }stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为truestamper.close(); Document doc = new Document(); PdfCopy copy = new PdfCopy(doc, out); doc.open(); PdfImportedPage importPage =copy.getImportedPage(new PdfReader(bos.toByteArray()), 1); copy.addPage(importPage);doc.close(); } catch (IOException e){ System.out.println(1); } catch (DocumentException e){ System.out.println(2); }} public static void main(String[] args){ fillTemplate(); } } 3.运行结果如下****************************************************************** ***如果没有模板,就行自己生成pdf文件保存到磁盘:下面的方法可以实现:[java] view plain copy print?public static void test1(){//生成pdf Document document = new Document();try { PdfWriter.getInstance(document, new FileOutputStream("E:/1.pdf"));document.open(); document.add(new Paragraph("hello word"));document.close(); } catch (Exception e){ System.out.println("file create exception"); } } 但是上述方法中包含中文时就会出现问题,所以可以使用下面这行代码实现,所使用的jar包,上面的两个依赖都包含了:[java] view plain copy print?public static voidtest1_1(){ BaseFont bf; Font font = null; try { bf =BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//创建字体font = new Font(bf,12);//使用字体} catch (Exception e){ e.printStackTrace(); }Document document = new Document(); try{ PdfWriter.getInstance(document, new FileOutputStream("E:/2.pdf"));document.open(); document.add(new Paragraph("hello word 你好世界",font));//引用字体document.close(); } catch (Exception e){ System.out.println("file create exception"); } }****************************************************************** ********************当然,如果你想弄的炫一点,想实现其他字体,可以去网上搜字体文件然后下载下来,放到项目里,我这里是在项目里新建了一个font文件夹,将字体文件放到了里面。
[原创]java向word模板中填充数据(总结)
![[原创]java向word模板中填充数据(总结)](https://img.taocdn.com/s3/m/fd6e32cd59f5f61fb7360b4c2e3f5727a5e924de.png)
[原创]java向word模板中填充数据(总结) 使⽤过PageOffice动态⽣成word⽂档的⼈都知道,PageOffice可以给word⽂档的指定位置进⾏填充,这⾥我们所说的指定位置在PageOffice的专业术语⾥⾯有两个概念,⼀个叫做数据区域(DataRegion),另⼀个叫做数据标签(DataTag)。
⼀、概念 数据区域:是Word⽂档中具有 "PO_" 前缀命名的书签所定位的⽂档区域。
简单来说,数据区域就是⼀种特殊的Word书签对象,便于定位Word⽂档中的内容。
数据标签:是任意的有效字符组成的特殊样式的字符串(如“【时间】”、“{姓名}”、“${name}”等等)作为标记,理论上这样的字符串(⽐如:“性别”、“地址”、“aa”、“bbcc”)也可以当做数据标签,但是不推荐使⽤,因为这样的标签不能从视觉上直观的看出word⽂档中包含了哪些数据标签。
⼆、使⽤ 数据区域⾥⾯可以填充些的内容:⽂本、图⽚、Word⽂件、Excel⽂件。
WordDocument doc = new WordDocument();//填充⽂本DataRegion dataRegion1 = doc.openDataRegion("PO_userName");dataRegion1.setValue("张三");//还可以给填充的⽂本设置字体,颜⾊,粗体等样式dataRegion1.getFont().setColor(Color.blue);dataRegion1.getFont().setSize(24);dataRegion1.getFont().setName("⾪书");dataRegion1.getFont().setBold(true);//填充图⽚doc.openDataRegion("PO_deptName").setValue("[image]img/123.jpg[/image]");//填充word⽂件doc.openDataRegion("PO_deptName").setValue("[word]doc/aabb.doc[/word]");//填充excel⽂件doc.openDataRegion("PO_deptName").setValue("[excel]doc/bbcc.xls[/excel]"); 数据标签中可以填充的内容:⽂本。
java根据内容坐标给pdf填充内容的方法

java根据内容坐标给pdf填充内容的方法PDF文件作为一种常用的文档格式,已经被广泛应用于各种领域。
然而,对于一些需要编辑PDF文件的情况,如需要在PDF文件中根据内容坐标填充内容,现有的PDF处理库可能无法满足需求。
本文将介绍一种基于Java的PDF处理方法,可以实现根据内容坐标给PDF填充内容的功能。
一、PDF文件读取首先,我们需要使用Java中的PDF库来读取PDF文件,获取需要填充内容的区域信息。
常见的PDF库有iText、Apache PDFBox等。
在本方法中,我们使用iText库作为示例。
具体实现过程如下:1. 创建一个PdfReader对象,指定需要读取的PDF文件路径。
```javaPdfReader reader = new PdfReader("path/to/pdf/file.pdf");```2. 遍历PDF文档中的每一页,获取每个页面的信息。
```javafor (int page = 1; page <= reader.getNumberOfPages();page++) {// 获取当前页面的信息Document document = new Document(reader, PageSize.A4);PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("output/page_" + page + ".pdf"));document.open();// 获取当前页面的内容信息...}```二、内容坐标计算在获取PDF文件中的内容信息后,我们需要根据内容坐标计算填充内容的区域位置。
通常来说,PDF文件中的内容坐标是以像素为单位进行计算的。
因此,我们需要根据实际需求,将像素坐标转换为页面坐标或屏幕坐标。
具体实现过程如下:1. 根据内容坐标计算填充区域的起始位置和结束位置。
itext 7 core中pdfacroform的用法

itext 7 core中pdfacroform的用法iText是一种流行的Java库,用于处理PDF文档。
iText 7 Core是iText 7系列的核心库,提供了丰富的功能,其中之一是处理PDF表单(AcroForm)。
本文将详细介绍iText 7 Core中PDF AcroForm的用法,包括表单创建、填充和读取。
1. 引入iText 7 Core库:首先,在你的Java项目中引入iText 7 Core 库。
你可以通过Maven或手动下载jar文件进行引入。
以下是Maven 的依赖配置:<dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.16</version> <!--请根据实际版本进行配置--></dependency>2. 创建PDF文档和AcroForm:使用iText 7 Core创建PDF文档并添加AcroForm。
以下是一个简单的示例:import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.forms.PdfAcroForm;public class CreatePDFWithAcroForm {public static void main(String[]args){try(PdfWriter writer =new PdfWriter("example.pdf");PdfDocument pdfDocument =new PdfDocument(writ er)){PdfAcroForm form =PdfAcroForm.getAcroForm(pdfDoc ument,true);// 在此处添加表单字段// form.addField(...);}catch(Exception e){e.printStackTrace();}}}在上述代码中,我们创建了一个PDF文档并获取了其AcroForm对象,以便在后续添加表单字段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 创建、填充PDF表单域表单域,可以按用途分为多种不同的类型,常见的有文本框、多行文本框、密码框、隐藏域、复选框、单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据。
下面的示例中,将分享通过Java编程在PDF中添加以及填充表单域的方法。
包括:文本框、复选框、单选按钮、列表框、组合框、签名域、按钮等。
这里填充表单域可分为2种情况,一种是在创建表单域时填充,一种是加载已经创建好表单域的文档进行填充。
此外,对于已经创建表单域并填写好的文档,也可以设置只读,防止修改、编辑。
要点概括:1.创建表单域2.填充表单域3.设置表单域只读工具:Free Spire.PDF for Java v2.0.0(免费版)Jar文件导入步骤1:在Java程序中新建一个文件夹可命名为Lib。
并将产品包中的2个jar文件复制到新建的文件夹下。
步骤2:复制文件后,添加到引用类库:选中这两个jar文件,点击鼠标右键,选择“Build Path”–“Add to Build Path”。
完成引用。
Java代码示例(供参考)1.创建并填充PDF表单域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(newPdfRGBColor(Color.BLUE));PdfSolidBrush brush2 = new PdfSolidBrush(newPdfRGBColor(Color.black));//创建TrueType字体PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,10),true);//添加文本框String text = "姓名:";//添加文本page.getCanvas().drawString(text, font, brush1, newPoint2D.Float(0, baseY));//在PDF中绘制文字Rectangle2D.Float tbxBounds= new Rectangle2D.Float(baseX, baseY, 150, 15);//创建Rectangle2D对象PdfTextBoxField textBox = new PdfTextBoxField(page, "TextBox");//创建文本框对象textBox.setBounds(tbxBounds);//设置文本框的BoundstextBox.setText("刘兴");//填充文本框textBox.setFont(font);//应用文本框的字体doc.getForm().getFields().add(textBox);//添加文本框到PDF域的集合baseY +=25;//添加复选框page.getCanvas().drawString("所在院系:", font, brush1, newPoint2D.Float(0, baseY));java.awt.geom.Rectangle2D.Float rec1 = newjava.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, newPoint2D.Float(baseX + 20, baseY));java.awt.geom.Rectangle2D.Float rec2 = newjava.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, newPoint2D.Float(baseX+90, baseY));doc.getForm().getFields().add(checkBoxField);//添加复选框到PDFbaseY += 25;//添加列表框page.getCanvas().drawString("录取批次:", font, brush1, new Point2D.Float(0, baseY));java.awt.geom.Rectangle2D.Float rec = newjava.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);//添加列表框到PDFbaseY += 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, newPoint2D.Float(baseX + 20, baseY));PdfRadioButtonListItem radioItem2 = newPdfRadioButtonListItem("Item2");//创建第二个单选按钮radioItem2.setBounds(new Rectangle2D.Float(baseX+ 70, baseY, 15, 15));page.getCanvas().drawString("成人教育", font, brush2, newPoint2D.Float(baseX + 90, baseY));radioButtonListField.getItems().add(radioItem1);radioButtonListField.getItems().add(radioItem2);radioButtonListField.setSelectedIndex(0);//选择填充第一个单选按钮doc.getForm().getFields().add(radioButtonListField);//添加单选按钮到PDFbaseY += 25;//添加组合框page.getCanvas().drawString("最高学历:", font, brush1, newPoint2D.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);//添加组合框到PDFbaseY += 25;//添加签名域page.getCanvas().drawString("本人签字确认\n以上信息属实:", font, brush1, new Point2D.Float(0, baseY));PdfSignatureField sgnField= newPdfSignatureField(page,"sgnField");//创建sgnField对象Rectangle2D.Float sgnBounds= new Rectangle2D.Float(baseX, baseY, 150, 80);//创建sgnBounds对象sgnField.setBounds(sgnBounds);doc.getForm().getFields().add(sgnField);//添加sgnField到PDFbaseY += 90;//添加按钮page.getCanvas().drawString("", font, brush1, newPoint2D.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.加载并填充已有的表单域文档测试文档如下:import com.spire.pdf.FileFormat;import com.spire.pdf.PdfDocument;import com.spire.pdf.fields.PdfField;import com.spire.pdf.widget.*;public class FillFormField_PDF{public static void main(String[] args ){//创建PdfDocument 对象,并加载PDF 文档PdfDocument doc = new PdfDocument();doc .loadFromFile("output.pdf");//获取文档中的域PdfFormWidget form = (PdfFormWidget) doc .getForm(); //获取域控件集合PdfFormFieldWidgetCollection formWidgetCollection = form .getFieldsWidget();//遍历域控件并填充数据for (int i = 0; i < formWidgetCollection.getCount(); i++) {PdfField field = formWidgetCollection.get(i);if (field instanceof PdfTextBoxFieldWidget) {PdfTextBoxFieldWidget textBoxField = (PdfTextBoxFieldWidget) field;textBoxField.setText("吴敏");}if (field instanceof PdfCheckBoxWidgetFieldWidget) {PdfCheckBoxWidgetFieldWidget checkBoxField = (PdfCheckBoxWidgetFieldWidget) field;switch(checkBoxField.getName()){case"CheckBox1":checkBoxField.setChecked(true);break;case"CheckBox2":checkBoxField.setChecked(true);break;}}if (field instanceof PdfRadioButtonListFieldWidget) {PdfRadioButtonListFieldWidget radioButtonListField = (PdfRadioButtonListFieldWidget) field;radioButtonListField.setSelectedIndex(1);}if (field instanceof PdfListBoxWidgetFieldWidget) {PdfListBoxWidgetFieldWidget listBox = (PdfListBoxWidgetFieldWidget) field;listBox.setSelectedIndex(1);}if (field instanceof PdfComboBoxWidgetFieldWidget) {PdfComboBoxWidgetFieldWidget comboBoxField = (PdfComboBoxWidgetFieldWidget) field;comboBoxField.setSelectedIndex(1);}}//保存文档doc.saveToFile("FillFormFields.pdf", FileFormat.PDF); }}填充效果:3.限制表单域编辑(只读)import com.spire.pdf.PdfDocument;public class FieldReadonly_PDF {public static void main(String[] args) throws Exception { {//创建PdfDocument对象,并加载包含表单域的PDF文档PdfDocument pdf = new PdfDocument();pdf.loadFromFile("test.pdf");//将文档中的所有表单域设置为只读pdf.getForm().setReadOnly(true);//保存文档pdf.saveToFile("result.pdf");}}生成的文档中,表单域将不可编辑,为只读状态。