дубликаты полей в PDF - Javascript - PullRequest
0 голосов
/ 07 июня 2019

У меня есть PDF, из которого пользователь должен заполнить. Необходимо будет выполнить репликацию полей на основе числа, введенного в более раннее поле (см. Скриншот ниже)

enter image description here

Например, если пользователь вводит число 3 в поле «Путешествия», я хочу иметь возможность создать 3 «копии» полной таблицы под ним.

Это то, что можно сделать с помощью Javascript в PDF? Я думаю, что это должно быть возможным, но я не могу найти что-либо на форумах Adobe, который указывает, как.

1 Ответ

1 голос
/ 11 июня 2019

Вы можете дублировать поля формы в PDF-файле, используя JavaScript (Acrobat DC SDK), например так (пример показывает создание кнопки на каждой странице):

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()");
}

[ Источник ]

Документация также отмечает следующее:

Несколько настраиваемых форм в форме на основе пользовательского ввода

Субформы также могут быть подвержены условиям. Например, поля формы для зависимых дочерних элементов станут видимыми, если пользователь установит флажок, указывающий, что есть зависимые дочерние элементы. Кроме того, XFA допускает несколько полей формы с одним именем и несколько копий одной формы.

На этой странице перечислены специфичные для XFA методы , которые могут оказаться полезными для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...