我有一个pdf文件,用户需要填写该文件。将需要根据先前字段中输入的数字来复制字段(请参见下面的屏幕截图)
例如,如果用户在“航程”框中输入数字3,我希望能够在其下面的完整表中创建3个“副本”。
这是可以在pdf中使用Javascript完成的吗?我的想法是应该是可能的,但是我在adobe论坛上找不到任何指示方式的信息。
答案 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,您可能会发现这样做很有用。