如何使用PDFBOX为PDF表单中的每个字段设置定义的值

时间:2013-02-12 06:50:12

标签: java pdf pdfbox

如何为PDF表格中的每个字段设置定义的值, 考虑到我的PDF格式中有5个字段说2个文本框(名字和姓氏)两个复选框(Check_1,Check_2),2个单选按钮(男性,女性)然后最后我有另一个文本框(地址) ,现在我必须定义或设置一个值,每个字段的名字为1表示名字,2表示姓氏,3表示Check_1,持续到7表示地址 下面是为每个字段定义值的代码段,但是在为单选按钮字段设置值时我遇到了一些问题 在男性和女性领域,它使男性和女性显示“1”,其他领域显示正确的值

任何人都可以帮助我......

由于

List FieldTypes = form.getFields();
    PDField pdfFields;
        for (int i = 0; i < FieldTypes.size(); i++) {

            pdfFields = (PDField) FieldTypes.get(i);
            String type = null;

            if (pdfFields instanceof PDTextbox) {
                type = "TextBox";
                String iAsString = Integer.toString(i);
                pdfFields.setValue(iAsString);
                System.out.println("Text" + "   "+ pdfFields.getFullyQualifiedName());
             } else if (pdfFields instanceof PDCheckbox) {
                type = "CheckBox";
                String iAsString = Integer.toString(i);
                System.out.println(iAsString);
                System.out.println("CheckBox" + "   "+ pdfFields.getFullyQualifiedName());
            } else if (pdfFields instanceof PDRadioCollection) {

                List kids = pdfFields.getKids();
                for (Object kid : kids) {
                      if (kid instanceof PDCheckbox) {
                      PDCheckbox checkbox = (PDCheckbox) kid;
                      String Name = checkbox.getOnValue();
                      String iAsString = Integer.toString(i);
                      System.out.println(iAsString);
                      type = "RadioButton";
                      System.out.println("RadioButton"+"  "+checkbox.getOnValue());
                      }

                }
            }
        }

2 个答案:

答案 0 :(得分:0)

基于doc我认为getOnValue()方法只返回像checked或not checked这样的状态。你可以试试getPartialName(),getValue(),getFullyQualifiedName(),getAlternateFieldName()或任何其他方法。

答案 1 :(得分:0)

使用Radio Buttons,您必须弄清楚&#34; On Values&#34;是,类似于Checkbox。但是,Radio Buttons有多个On值,因此它的方法不同。

例如,如果我针对单选按钮组运行此操作,您必须从检查储蓄或货币市场中选择,我们会看到这样:

帐户类型(org.apache.pdfbox.pdmodel.interactive.form.PDRadioButton)

单选按钮

[储蓄,检查,货币市场]

public void list(PDField field)
{
    System.out.println(field.getFullyQualifiedName() + " (" + field.getClass().getName() +")");

    if(field instanceof PDRadioButton){
        System.out.println("Radio Button");
        System.out.println(((PDRadioButton) field).getOnValues());
    }
}

如果我想要&#34;检查&#34;选中按钮,我会将字段的值设置为&#34;正在检查&#34;。

希望这有帮助。