PDF Javascript для пользовательского штампа не работает в Adobe Reader DC
Код ниже предназначен для пользовательского штампа в Adobe Reader. Этот код предназначен для строки из 3 текстовых полей в таблице марок.
Что он делает: Запрашивает пользовательский ввод в окне JavaScript, когда ставится штамп. После отправки текстовые поля в таблице пользовательского штампа заполняются вводом.
Проблема: она работает в Adobe Acrobat Pro XI для всех 3 полей. Но не работает ни для чего, кроме первого поля в Adobe Reader DC. В результате остальные 2 поля будут пустыми.
Тот факт, что первое поле работает, означает, что мой код в порядке до нижней части ("ЭТА ЧАСТЬ ЗДЕСЬ!"). Любая помощь здесь в исправлении или сообщении мне другого способа определения значений полей с пользовательским вводом была бы признательна:)
Из того, что я слышал ( PDF JavaScript не работает в Adobe Reader DC, но во всех других приложениях Reader), новый Adobe Reader DC довольно строг по синтаксису JavaScript.
var dialog = {
noz8Value: "",
fa8Value: "",
fl8Value: "",
commit:function (dialog) { // called when OK pressed
var results = dialog.store();
this.noz8Value = results["txt1"];
this.fa8Value = results["txt2"];
this.fl8Value = results["txt3"];
},
description:
{
name: "8 Nozzle Load", // Dialog box title
elements:
[
{
type: "view",
elements:
[
{
name: "1st Nozzle ID: ",
type: "static_text",
},
{
item_id: "txt1",
type: "edit_text",
width: 300,
height: 30
},
{
name: "Fa (kN): ",
type: "static_text",
},
{
item_id: "txt2",
type: "edit_text",
width: 300,
height: 30
},
{
name: "Fl (kN): ",
type: "static_text",
},
{
item_id: "txt3",
type: "edit_text",
width: 300,
height: 30
},
]
},
]
}
};
// THIS PART HERE (below)
//Line below Runs dialog function (prompt window) if stamp is placed down
if(event.source.forReal && (event.source.stampName == "#nozzle"))
{
if ("ok" == app.execDialog(dialog))
{
var cMsg = dialog.noz8Value;
event.value = "\n" + cMsg;
event.source.source.info.noz = cMsg;
var cMsg2 = dialog.fa8Value;
this.getField("fa8Field").value = cMsg2;
var cMsg3 = dialog.fl8Value;
var test1 = this.getField("fl8Field");
test1.value= cMsg3
// Above I tried 3 different ways of linking the user input as the field's `value.`
}
}
1 ответ
Я починил это!
Без event.source.source.info.noz = cMsg; код работает. Старые версии работали нормально и были более снисходительными. DC строгий.
if(event.source.forReal && (event.source.stampName == "#nozzle"))
{
if ("ok" == app.execDialog(dialog))
{
var cMsg = dialog.noz8Value;
event.value = "\n" + cMsg;
var cMsg2 = dialog.fa8Value;
this.getField("fa8Field").value = cMsg2;
var cMsg3 = dialog.fl8Value;
var test1 = this.getField("fl8Field");
test1.value= cMsg3
}
}