Java 获取PDF表单域的值
程序员文章站
2022-03-25 18:01:45
...
本文将介绍在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(); } }
表单域读取结果:
(本文完)
上一篇: 14.RDD深度解析