Is it possible to modify PDF Form Field Names?

前端 未结 9 2184
一个人的身影
一个人的身影 2021-02-06 06:05

Here\'s the situation. I have a PDF with automatically generated pdf form field names. The problem is that these names are not very user friendly. They look something like :

9条回答
  •  逝去的感伤
    2021-02-06 06:37

    Although you can't rename fields using javascript you can add new fields and delete existing fields. You can also cut and paste between documents. So...

    One. Develop renaming script, e.g.:

        var doc = app.activeDocs[0];
        var fnames = new Array();
        for ( var i = 0; i < doc.numFields - 1; i++) {      
            fnames[i] = doc.getNthFieldName(i);
        }
        for (var i = 0; i < doc.numFields - 1; i++){        
            var f = doc.getField(fnames[i] + ".0");
            var nfn = fnames[i].replace("1","2");
            var rb = doc.addField(nfn,"radiobutton",0,f.rect)
            for ( var j = 1; j < 9; j++){//Add the other 8
                f = doc.getField(fnames[i] + "." + j);
                doc.addField(nfn,"radiobutton",0,f.rect)
            }
            rb.setExportValues([1,2,3,4,5,6,7,8,9]);
            rb.borderStyle = f.borderStyle;
            rb.strokeColor = f.strokeColor;
            rb.fillColor = f.fillColor;
            doc.removeField(fnames[i]);
            console.println(fnames[i] + " to " + nfn);
        }
    

    Notes:
    Renaming fields may change order of fields for getNthFieldName, so get these first.
    A group of radiobuttons is one field (getField("Groupname")), to get the n'th in the same group use getField("Groupname.n"), you need these for the position rectangle. Properties which apply to all can be set enmase.
    addField parameters are: field name, field type, page, position rectangle)
    In the example there are 9 radiobuttons in each group

    Two. Cut and paste the fields you want to rename to a blank pdf (I've assumed one page above). Run the script. Cut and paste back.

    You may need to change app.activeDocs[0] to app.activeDocs[1] or replace "doc" with "this" if keeping both documents open when running the script

提交回复
热议问题