Java 獲取PDF表單域的值

本文將介紹在Java程序中來獲取PDF表單域值的方法,包括獲取指定(可通過索引值或表單域名稱)表單域的值及獲取文檔中所有表單域的值。PDF表單域操作,可參考相關文章“創建填充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();
    }
}

表單域讀取結果:

 

(本文完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章