本文将介绍在Java程序中来获取PDF表单域值的方法,包括获取指定(可通过索引值或表单域名称)表单域的值及获取文档中所有表单域的值。
使用工具:Free Spire.PDF for Java (免费版)
Jar文件获取:
方法1:通过官网下载jar文件包。下载后,解压文件,将lib文件夹下的Spire.Pdf.jar导入java程序。
测试文文档如下:
Java代码示例
【示例1】获取指定表单域的值
import com.spire.pdf.PdfDocument; import com.spire.pdf.widget.PdfFormWidget; import com.spire.pdf.widget.PdfTextBoxFieldWidget; import java.io.FileWriter; import java.io.IOException; public class GetSpecificFormfieldValue { public static void main(String[] args) { //加载PDF文档 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("test.pdf"); //获取表单域 PdfFormWidget formWidget = (PdfFormWidget)pdf.getForm(); //通过索引值来获取指定表单域中的值 PdfTextBoxFieldWidget textbox = ( PdfTextBoxFieldWidget)formWidget.getFieldsWidget().get(0); //PdfTextBoxFieldWidget textbox = ( PdfTextBoxFieldWidget)formWidget.getFieldsWidget().get("TextBox");//通过表单域名称来获取值 //将获取的值写入txt文档 String text = textbox.getText(); try { //将文本写入 .txt文件 FileWriter writer = new FileWriter("GetSpecificFormfieldValue.txt"); writer.write(text); writer.flush(); } catch (IOException e) { e.printStackTrace(); } pdf.close(); } }
指定表单域值获取结果:
【示例2】获取文中所有表单域的值
import com.spire.pdf.PdfDocument; import com.spire.pdf.fields.PdfField; import com.spire.pdf.widget.*; import java.io.FileWriter; import java.io.IOException; public class GetAllFormfieldValue { public static void main(String[] args) { //加载PDF文档 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("测试.pdf"); //获取表单域 PdfFormWidget formWidget = (PdfFormWidget)pdf.getForm(); StringBuilder sb = new StringBuilder(); //遍历表单域控件集合并提取所有表单的值 for (int i = 0; i < formWidget.getFieldsWidget().getCount(); i++) { PdfField field = (PdfField)formWidget.getFieldsWidget().getList().get(i); //获取文本框的值 if (field instanceof PdfTextBoxFieldWidget) { PdfTextBoxFieldWidget textBoxField = (PdfTextBoxFieldWidget)field ; String text = textBoxField.getText(); sb.append("文本框内容: " + text + "\r\n"); } //获取列表框的值 if (field instanceof PdfListBoxWidgetFieldWidget) { PdfListBoxWidgetFieldWidget listBoxField = (PdfListBoxWidgetFieldWidget)field; //获取列表框中选中的值 String selectedValue = listBoxField.getSelectedValue(); sb.append("列表框选中的内容: " + selectedValue + "\r\n"); //获取列表框中的所有选项值 sb.append("列表框内容: \r\n"); PdfListWidgetItemCollection items = listBoxField.getValues(); for (PdfListWidgetItem item : (Iterable<PdfListWidgetItem>) items) { sb.append(item.getValue() + "\r\n"); } } //获取组合框的值 if (field instanceof PdfComboBoxWidgetFieldWidget) { PdfComboBoxWidgetFieldWidget comBoxField = (PdfComboBoxWidgetFieldWidget)field ; //获取组合框中选中的值 String selectedValue = comBoxField.getSelectedValue(); sb.append("组合框选中的内容: " + selectedValue + "\r\n"); //获取组合框中所有选项值 sb.append("组合框内容: \r\n"); PdfListWidgetItemCollection items = comBoxField.getValues(); for (PdfListWidgetItem item : (Iterable<PdfListWidgetItem>) items) { sb.append(item.getValue() + "\r\n"); } } //获取单选按钮值 if (field instanceof PdfRadioButtonListFieldWidget) { PdfRadioButtonListFieldWidget radioBtnField = (PdfRadioButtonListFieldWidget)field; String Value = radioBtnField.getValue(); sb.append("单选按钮内容: " + Value + "\r\n"); } //获取复选框值 if (field instanceof PdfCheckBoxWidgetFieldWidget) { PdfCheckBoxWidgetFieldWidget checkBoxField = (PdfCheckBoxWidgetFieldWidget)field; //获取复选框的选中状态 boolean state = checkBoxField.getChecked(); sb.append("复选框是否被选中? " + state + "\r\n"); } } try { //将文本写入 .txt文件 FileWriter writer = new FileWriter("GetAllFormfieldValues.txt"); writer.write(sb.toString()); writer.flush(); } catch (IOException e) { e.printStackTrace(); } pdf.close(); } }
表单域读取结果:
(本文完)
相关推荐
Java 操作 PDF 表单是一项常见的任务,尤其在企业级应用中,经常需要对 PDF 文件进行数据填充、签名等操作。Java 提供了多种库来处理 PDF 文档,其中包括 Apache PDFBox、iText 和 Flying Saucer 等。在这个主题中,...
3. 获取一个AcroFields对象,用于处理表单域和签章。 4. 选择合适的签章位置,创建SignatureAppearance对象。 5. 加载数字证书,创建SignatureDictionary对象。 6. 使用setCertificate方法设置证书。 7. 使用...
在上述代码中,我们首先读取模板文件,接着获取PDF中的表单,然后通过域名获取所在页和坐标。接着,我们读取图片,并根据域的大小缩放图片。最后,我们将图片添加到PDF中,并设置其绝对位置。 通过上述代码,我们...
4. 填充数据:通过`AcroFields`接口,你可以获取到PDF中的表单域,并设置其值。例如,`acroFields.setField("fieldName", "fieldValue")`。 5. 保存结果:最后,使用`PdfStamper`或`PdfCopyFields`的`close()`方法...
2. 创建签名表单域:使用PDSignatureField创建签名表单字段,并在PDF文档中添加。 3. 实现SignatureInterface:自定义实现该接口,提供签名的逻辑,包括证书和私钥的使用。 4. 签名操作:调用PDDocument的...
6. **表单处理**:支持交互式PDF表单的创建、填充和导出,包括Acrobat表单域和数据的处理。 7. **安全性和权限管理**:设置PDF文档的访问密码,限制打印、复制、编辑等操作,以保护文档内容的安全。 8. **数字签名...
Acrobat表单提供了一种电子化填充PDF文档表单的能力,它允许在PDF文档上添加表单域和按钮,这实质上是在原始PDF文档之上增加了一个数据层。为了在客户端和服务器端之间传输表单数据,需要使用特定的数据传输格式,...
iText提供了一套丰富的API来处理PDF表单,包括读取、修改和填充表单域。以下是一个基本的表单填充示例: 1. 加载PDF模板文件,获取AcroFields对象:`PdfReader reader = new PdfReader("template.pdf"); AcroFields...
例如,在JSP页面中,我们经常使用request.getParameter()方法获取用户输入的表单域的值。如果用户没有提供该表单域的值,request.getParameter()方法将返回null对象。然后,如果我们对该null对象进行操作,例如调用...
itext7是一款功能强大的PDF处理库,支持Java等多种语言,能够帮助开发者轻松实现PDF的创建、修改等功能。 #### 二、需求分析 本案例的核心需求是根据已有的PDF模板来填充图片,并最终生成完整的PDF文档。这在实际...
Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。...
5. **使用iText处理PDF**:对于PDF文件,加载模板,然后使用iText的`PdfReader`和`PdfStamper`类找到并替换模板中的AcroFields(PDF表单域)。 6. **生成新文件**:完成替换后,使用POI或iText保存为新的Word或PDF...
Java必备知识点大全的内容非常丰富,涵盖了Java语言的基础知识、常用的框架以及数据库的应用等方面,是每一个Java开发者学习和面试时的重要参考。下面是对文档中各个知识点的详细解析。 基础篇: JDK常用的包:Java...
Java 程序员笔试题面试题.pdf 以下是对给定文件的知识点分析: 一、编程语言方面 1. Java 中的字符串操作:在选择题 1 中,考察了 Java 中字符串的操作,特别是字符串的连接和修改。在 Java 中,字符串是 ...
例如,要获取名为`encoding`的参数值,可以这样做:\n\n```java\npublic class TestServlet extends HttpServlet {\n protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ...
4. **表单处理**:PDFBox支持交互式PDF表单的填充和导出,通过PDAcroForm类可以操作表单域、按钮、选择项等元素。 5. **图像处理**:PDF文档中常常包含图像,PDFBox提供了处理嵌入图像的方法,包括提取、替换或调整...
- `getFloat(int columnIndex)`:获取指定列的浮点值 10. MySQL中,获取分页数据的正确SQL语句是: - `select * from test limit 11,10;` 从第12条记录开始取10条,对应第2页 11. 统计`test`表中的记录总数: -...
当表单验证失败并返回时,可以通过JavaScript的`history.back()`或`go(-1)`方法重新加载上一页,但需要注意的是,密码域(password)的值通常不会被回填。 10. **获取HTTP头信息**: 使用`HttpServletRequest`...