`

Java 获取PDF表单域的值

阅读更多

本文将介绍在Java程序中来获取PDF表单域值的方法,包括获取指定(可通过索引值或表单域名称)表单域的值及获取文档中所有表单域的值。

 

使用工具Free Spire.PDF for Java (免费版)

Jar文件获取:

方法1:通过官网下载jar文件包。下载后,解压文件,将lib文件夹下的Spire.Pdf.jar导入java程序。

方法2:通过maven仓库安装导入,可参考导入方法

 

测试文文档如下:


 

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

 表单域读取结果:


 

(本文完)

 

 

  • 大小: 31.2 KB
  • 大小: 36.3 KB
  • 大小: 42.3 KB
0
0
分享到:
评论

相关推荐

    java操作PDF表单

    Java 操作 PDF 表单是一项常见的任务,尤其在企业级应用中,经常需要对 PDF 文件进行数据填充、签名等操作。Java 提供了多种库来处理 PDF 文档,其中包括 Apache PDFBox、iText 和 Flying Saucer 等。在这个主题中,...

    java 生成pdf 签章

    3. 获取一个AcroFields对象,用于处理表单域和签章。 4. 选择合适的签章位置,创建SignatureAppearance对象。 5. 加载数字证书,创建SignatureDictionary对象。 6. 使用setCertificate方法设置证书。 7. 使用...

    java实现在pdf模板的指定位置插入图片

    在上述代码中,我们首先读取模板文件,接着获取PDF中的表单,然后通过域名获取所在页和坐标。接着,我们读取图片,并根据域的大小缩放图片。最后,我们将图片添加到PDF中,并设置其绝对位置。 通过上述代码,我们...

    填充pdf模板源码和jar包

    4. 填充数据:通过`AcroFields`接口,你可以获取到PDF中的表单域,并设置其值。例如,`acroFields.setField("fieldName", "fieldValue")`。 5. 保存结果:最后,使用`PdfStamper`或`PdfCopyFields`的`close()`方法...

    java pdf 实现电子签章下载

    2. 创建签名表单域:使用PDSignatureField创建签名表单字段,并在PDF文档中添加。 3. 实现SignatureInterface:自定义实现该接口,提供签名的逻辑,包括证书和私钥的使用。 4. 签名操作:调用PDDocument的...

    Aspose pdf for java 3.3.0

    6. **表单处理**:支持交互式PDF表单的创建、填充和导出,包括Acrobat表单域和数据的处理。 7. **安全性和权限管理**:设置PDF文档的访问密码,限制打印、复制、编辑等操作,以保护文档内容的安全。 8. **数字签名...

    动态生成PDF文档的Java实现

    Acrobat表单提供了一种电子化填充PDF文档表单的能力,它允许在PDF文档上添加表单域和按钮,这实质上是在原始PDF文档之上增加了一个数据层。为了在客户端和服务器端之间传输表单数据,需要使用特定的数据传输格式,...

    itext设置段落行间距.zip

    iText提供了一套丰富的API来处理PDF表单,包括读取、修改和填充表单域。以下是一个基本的表单填充示例: 1. 加载PDF模板文件,获取AcroFields对象:`PdfReader reader = new PdfReader("template.pdf"); AcroFields...

    java常见错误.pdf

    例如,在JSP页面中,我们经常使用request.getParameter()方法获取用户输入的表单域的值。如果用户没有提供该表单域的值,request.getParameter()方法将返回null对象。然后,如果我们对该null对象进行操作,例如调用...

    itext7 根据pdf模板填充图像框

    itext7是一款功能强大的PDF处理库,支持Java等多种语言,能够帮助开发者轻松实现PDF的创建、修改等功能。 #### 二、需求分析 本案例的核心需求是根据已有的PDF模板来填充图片,并最终生成完整的PDF文档。这在实际...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。...

    springboot实现根据指定pdf、word模板文件填充值到文件里面,生成对应的文件

    5. **使用iText处理PDF**:对于PDF文件,加载模板,然后使用iText的`PdfReader`和`PdfStamper`类找到并替换模板中的AcroFields(PDF表单域)。 6. **生成新文件**:完成替换后,使用POI或iText保存为新的Word或PDF...

    java必备知识点大全.pdf

    Java必备知识点大全的内容非常丰富,涵盖了Java语言的基础知识、常用的框架以及数据库的应用等方面,是每一个Java开发者学习和面试时的重要参考。下面是对文档中各个知识点的详细解析。 基础篇: JDK常用的包:Java...

    中科软java程序员笔试题面试题.pdf,这是一份不错的文件

    Java 程序员笔试题面试题.pdf 以下是对给定文件的知识点分析: 一、编程语言方面 1. Java 中的字符串操作:在选择题 1 中,考察了 Java 中字符串的操作,特别是字符串的连接和修改。在 Java 中,字符串是 ...

    工学院java复习.pdf

    例如,要获取名为`encoding`的参数值,可以这样做:\n\n```java\npublic class TestServlet extends HttpServlet {\n protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ...

    pdfbox最新版

    4. **表单处理**:PDFBox支持交互式PDF表单的填充和导出,通过PDAcroForm类可以操作表单域、按钮、选择项等元素。 5. **图像处理**:PDF文档中常常包含图像,PDFBox提供了处理嵌入图像的方法,包括提取、替换或调整...

    Java测试题(20211003222730).pdf

    - `getFloat(int columnIndex)`:获取指定列的浮点值 10. MySQL中,获取分页数据的正确SQL语句是: - `select * from test limit 11,10;` 从第12条记录开始取10条,对应第2页 11. 统计`test`表中的记录总数: -...

    java(20211007021206).pdf

    当表单验证失败并返回时,可以通过JavaScript的`history.back()`或`go(-1)`方法重新加载上一页,但需要注意的是,密码域(password)的值通常不会被回填。 10. **获取HTTP头信息**: 使用`HttpServletRequest`...

Global site tag (gtag.js) - Google Analytics