pdf中的重复字段-Javascript

时间:2019-06-07 05:54:20

标签: javascript pdf pdf-java-toolkit

我有一个pdf文件,用户需要填写该文件。将需要根据先前字段中输入的数字来复制字段(请参见下面的屏幕截图)

enter image description here

例如,如果用户在“航程”框中输入数字3,我希望能够在其下面的完整表中创建3个“副本”。

这是可以在pdf中使用Javascript完成的吗?我的想法是应该是可能的,但是我在adobe论坛上找不到任何指示方式的信息。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用JavaScript(Acrobat DC SDK)复制PDF中的表单字段(示例显示了在每个页面上创建一个按钮):

var aPage = this.getPageBox();
var w = 45;         // Width of each button
var h = 12          // Height of each button
var nNavi = 4;      // Number of buttons to be placed
var g = 6;          // Gap between buttons
var totalWidth = nNavi * w + (nNavi - 1) * g; // total width of navi bar

var widthPage = aPage[2] - aPage[0];

// Horizontal offset to center navi bar
var hoffset = (widthPage - totalWidth) / 2;
var voffset = 12;          // vertical offset from bottom

for (var nPage = 0; nPage < this.numPages; nPage++) {
       // Create the fields

       var pp = this.addField("PrevPage", "button", nPage,  
                [ hoffset, voffset, hoffset + w, voffset + h ] );
       pp.buttonSetCaption(pp.name);
       pp.fillColor=color.ltGray;
       pp.setAction("MouseUp", "this.pageNum--");

       var np = this.addField("NextPage", "button", nPage,
                [ hoffset + w + g, voffset, hoffset + 2*w + g, voffset + h ] );
       np.buttonSetCaption(np.name);
       np.fillColor=color.ltGray;
       np.setAction("MouseUp", "this.pageNum++");

       var pv = this.addField("PrevView", "button", nPage,
                [ hoffset + 2*w + 2*g, voffset, hoffset + 3*w + 2*g, voffset + h ] );

       pv.buttonSetCaption(pv.name);
       pv.fillColor=color.ltGray;
       pv.setAction("MouseUp", "app.goBack()");

       var nv = this.addField("NextView", "button", nPage,
           [ hoffset + 3*w + 3*g, voffset, hoffset + 4*w + 3*g, voffset + h ] );

       nv.buttonSetCaption(nv.name);
       nv.fillColor=color.ltGray;
       nv.setAction("MouseUp", "app.goForward()");
}

[Source]

documentation还应注意以下几点:

  

基于用户输入的表单中的多个自定义表单

     

子表单也可能受条件限制。例如,如果用户选中一个指示存在依赖项的框,则依赖项的表单字段将变为可见。此外,XFA允许具有相同名称的多个表单域和相同表单的多个副本。

This page lists XFA specific methods,您可能会发现这样做很有用。