Javascript
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript相关的知识,希望对你有一定的参考价值。
我已经从Bluebeam(强大的PDF编辑器)创建现有邮票的成功案例中受益匪浅。我有一个带有一个自定义文本字段的图章,该文本字段具有一个带有预定选项的下拉菜单。戳记还具有其他几个文本字段,其中一些字段允许用户输入数据,而另一些文本字段可以提取数据-当前日期和用户名。
所有这些都很好,但是我想添加带有预定选项的第二个文本字段,似乎没有办法做到这一点。
该软件的工作方式,每当将图章首次放置到PDF上时,都会运行一个“计算” javascript。计算代码创建UI,供用户输入日期。计算代码引用了“ stampcode” javascript。“ stampcode”引用了图章本身中的特定元素(也是PDF文件)。
我想我已经正确设置了印章代码。我认为计算代码是需要编辑的。我觉得这是一个相当简单的过程,我只是一个相当新手的编码人员,真的不知道从哪里开始。我花了大约4个小时来尝试调整计算代码,但运气不佳。任何帮助将不胜感激。 (我正在使用Visual Studio代码进行编辑)。
邮政编码:
var builder =
// These map to Text Fields in the Stamp
textBoxes :
[
field:"Client", description:"Client:", default:function() return ""; ,
field:"Project_Number", description:"Project No.:", default:function() return ""; ,
field:"Expense_Date", description:"Date of Exp.:", default:function() return ""; ,
field:"Markup", description:"Markup %:", default:function() ""; ,
field:"CheckedBy", description:"Checked by:", default:function() return Collab.user; ,
field:"Date", description:"Date:", default:function()
var curDate = new Date();
return (curDate.getMonth() + 1) + "/" + curDate.getDate() + "/" + curDate.getFullYear();
,
],
// This maps to a Radio Group in the PDF named 'Status'
radioGroup : "Status",
radioButtons :
[
// value maps to the 'Choice' of each radio button in the group, description will show on the dialog
value:"Approved", description:"Approved" ,
value:"Revise", description:"Revise" ,
value:"Rejected", description:"Rejected"
],
// This maps to a Popup Group in the PDF named 'Reimburse'
popupGroup: "Reimburse",
listItems :
[
popupItems :
//list of items of Popup menu, positive number indicates default selection
"XXX": -1,
"XXX": -1,
"DC": -1,
"CC": -1
],
// This maps to a Popup Group in the PDF named 'Service'
popupGroup: "Service",
listItems :
[
popupItems :
//list of items of Popup menu, positive number indicates default selection
"00": -1,
"10": -1,
"20": -1,
"30": -1,
"40": -1,
"50": -1,
"51": -1,
"55": -1,
"60": -1,
"65": -1,
"70": -1,
"80": -1,
"81": -1,
"90": -1,
"91": -1,
"99": -1
],
// This maps to a Radio Group in the PDF named 'Status'
radioGroup : "Status",
radioButtons :
[
// value maps to the 'Choice' of each radio button in the group, description will show on the dialog
value:"Billable", description:"Billable" ,
value:"Not Billable", description:"Not Billable"
],
radioErrorMsg : "Please select a status",
计算代码:
// WARNING: DO NOT EDIT
// SEE GLOBAL JAVASCRIPT SECTION FOR CUSTOMIZATION
if (event.source.forReal)
var stampDialog = CreateDialog(builder);
app.execDialog(stampDialog);
this.getField(builder.radioGroup).value = stampDialog.radioselection;
this.getField(builder.popupGroup).value = stampDialog.popupSelection;
for (var i = 0; i < builder.textBoxes.length; ++i)
var t = builder.textBoxes[i];
this.getField(t.field).value = stampDialog.textBoxResults[i];
function CreateDialog(dialogBuilder)
var sd = new Object();
sd.builder = dialogBuilder;
sd.radioSelection = "";
sd.popupSelection = "";
sd.textBoxResults = new Array();
var popupElements = new Array();
popupElements[0] =
type: "popup",
item_id: "popupItems",
field: sd.builder.popupGroup,
width: 250
;
var popupCluster =
type: "cluster",
name: builder.popupGroup,
elements: popupElements
;
var stateElements = new Array();
for (var i = 0; i < dialogBuilder.radioButtons.length; ++i)
var c = dialogBuilder.radioButtons[i];
stateElements[i] =
type: "radio",
name: c.description,
item_id: "rad" + i,
group_id: "grp1"
;
var stateCluster =
type: "cluster",
name: "Status",
alignment: "align_center",
align_children: "align_distribute",
elements: stateElements
;
var optionsElements = new Array();
for (var i = 0; i < dialogBuilder.textBoxes.length; ++i)
var view = new Object();
view.type = "view";
view.align_children = "align_row";
view.elements = new Array();
var t = dialogBuilder.textBoxes[i];
var s = new Object();
s.type = "static_text";
s.item_id = "sta" + i;
s.name = t.description;
s.width = 90;
var e = new Object();
e.type = "edit_text";
e.item_id = "edt" + i;
e.width = 150;
view.elements[0] = s;
view.elements[1] = e;
optionsElements[i] = view;
var optionsCluster =
type: "cluster",
name: "Options",
elements: optionsElements
;
sd.initialize = function(dialog)
var init = new Object();
for (var i = 0; i < this.builder.textBoxes.length; ++i)
var t = this.builder.textBoxes[i];
var id = "edt" + i;
init[id] = t.default();
dialog.load(init);
dialog.load(this.builder.listItems[0]);
;
sd.commit = function(dialog)
var res = dialog.store();
for (var i = 0; i < this.builder.radioButtons.length; ++i)
var c = this.builder.radioButtons[i];
var id = "rad" + i;
if (res[id] == true)
this.radioSelection = c.value;
break;
for (var i = 0; i < this.builder.textBoxes.length; ++i)
var t = this.builder.textBoxes[i];
var id = "edt" + i;
this.textBoxResults[i] = res[id];
for (var i in res["popupItems"])
if (res["popupItems"][i] >0)
this.popupSelection = i;
;
sd.validate = function(dialog)
var res = dialog.store();
for (var i = 0; i < this.builder.radioButtons.length; ++i)
var c = this.builder.radioButtons[i];
var id = "rad" + i;
if (res[id] == true)
return true;
app.alert(this.builder.radioErrorMsg);
return false;
;
sd.description =
name: "Stamp Dialog",
elements:
[
type: "view",
align_children: "align_fill",
elements:
[
popupCluster,
stateCluster,
optionsCluster
]
,
type: "ok"
]
;
return sd;
我也很难理解Bluebeam中的Stamps API。对我来说,最大的帮助就是跌入了Adobe Javascript API reference。这些图章的大多数API是Adobe标准的一部分。它不特定于Blubeam。
我将您的代码恢复为Bluebeam网站上提供的custom stamp template的参考代码。
计算脚本
// WARNING: DO NOT EDIT
// SEE GLOBAL JAVASCRIPT SECTION FOR CUSTOMIZATION
if (event.source.forReal)
var stampDialog = CreateDialog(builder);
app.execDialog(stampDialog);
this.getField(builder.radioGroup).value = stampDialog.radioSelection;
//Popup1
this.getField(builder.popupGroup).value = stampDialog.popupSelection;
//Popup2
this.getField(builder.popupGroup2).value = stampDialog.popupSelection2;
for (var i = 0; i < builder.textBoxes.length; ++i)
var t = builder.textBoxes[i];
this.getField(t.field).value = stampDialog.textBoxResults[i];
function CreateDialog(dialogBuilder)
var sd = new Object();
sd.builder = dialogBuilder;
sd.radioSelection = "";
//Popup1
sd.popupSelection = "";
//Popup2
sd.popupSelection2 = "";
sd.textBoxResults = new Array();
var popupElements = new Array();
var popupElements2 = new Array();
//Popup1
popupElements[0] =
type: "popup",
item_id: "ppi1",
field: sd.builder.popupGroup,
width: 250
;
//Popup2
popupElements2[0] =
type: "popup",
item_id: "ppi2",
field: sd.builder.popupGroup2,
width: 250
;
var popupCluster =
type: "cluster",
name: builder.popupGroup,
elements: popupElements
;
var popupCluster2 =
type: "cluster",
name: builder.popupGroup2,
elements: popupElements2
;
var stateElements = new Array();
for (var i = 0; i < dialogBuilder.radioButtons.length; ++i)
var c = dialogBuilder.radioButtons[i];
stateElements[i] =
type: "radio",
name: c.description,
item_id: "rad" + i,
group_id: "grp1"
;
var stateCluster =
type: "cluster",
name: "Status",
alignment: "align_center",
align_children: "align_distribute",
elements: stateElements
;
var optionsElements = new Array();
for (var i = 0; i < dialogBuilder.textBoxes.length; ++i)
var view = new Object();
view.type = "view";
view.align_children = "align_row";
view.elements = new Array();
var t = dialogBuilder.textBoxes[i];
var s = new Object();
s.type = "static_text";
s.item_id = "sta" + i;
s.name = t.description;
s.width = 90;
var e = new Object();
e.type = "edit_text";
e.item_id = "edt" + i;
e.width = 150;
view.elements[0] = s;
view.elements[1] = e;
optionsElements[i] = view;
var optionsCluster =
type: "cluster",
name: "Options",
elements: optionsElements
;
sd.initialize = function(dialog)
var init = new Object();
for (var i = 0; i < this.builder.textBoxes.length; ++i)
var t = this.builder.textBoxes[i];
var id = "edt" + i;
init[id] = t.default();
dialog.load(init);
dialog.load(this.builder.listItems[0]);
dialog.load(this.builder.listItems2[0]);
;
sd.commit = function(dialog)
var res = dialog.store();
for (var i = 0; i < this.builder.radioButtons.length; ++i)
var c = this.builder.radioButtons[i];
var id = "rad" + i;
if (res[id] == true)
this.radioSelection = c.value;
break;
for (var i = 0; i < this.builder.textBoxes.length; ++i)
var t = this.builder.textBoxes[i];
var id = "edt" + i;
this.textBoxResults[i] = res[id];
//Popup1
for (var i in res["ppi1"])
if (res["ppi1"][i] > 0)
this.popupSelection = i;
//Popup2
for (var i in res["ppi2"])
if (res["ppi2"][i] > 0)
this.popupSelection2 = i;
;
sd.validate = function(dialog)
var res = dialog.store();
for (var i = 0; i < this.builder.radioButtons.length; ++i)
var c = this.builder.radioButtons[i];
var id = "rad" + i;
if (res[id] == true) return true;
`enter code here`
app.alert(this.builder.radioErrorMsg);
return false;
;
sd.description =
name: "Stamp Dialog",
elements: [
type: "view",
align_children: "align_fill",
elements: [popupCluster, popupCluster2, stateCluster, optionsCluster]
,
type: "ok"
]
;
return sd;
邮递区号
var builder =
// These map to Text Fields in the Stamp
textBoxes: [
field: "CheckedBy",
description: "Checked by:",
default: function()
return Collab.user;
,
field: "Date",
description: "Date:",
default: function()
var curDate = new Date();
return (
curDate.getMonth() +
1 +
"/" +
curDate.getDate() +
"/" +
curDate.getFullYear()
);
,
field: "Submittal",
description: "Submittal #:",
default: function()
return "";
,
field: "Spec",
description: "Spec #:",
default: function()
return "";
],
// This maps to a Radio Group in the PDF named 'Status'
radioGroup: "Status",
radioButtons: [
// value maps to the 'Choice' of each radio button in the group, description will show on the dialog
value: "Approved", description: "Approved" ,
value: "Revise", description: "Revise" ,
value: "Rejected", description: "Rejected"
],
radioErrorMsg: "Please select a status",
// This maps to a Popup Group in the PDF named 'Project'
popupGroup: "Project",
listItems: [
ppi1:
//list of items of Popup menu, positive number indicates default selection
"Project 1": -1,
"Project 2": -1,
"Project 3": -1,
"Project 4": -1,
"Project 5": -1
],
popupGroup2: "Service",
listItems2: [
ppi2:
//list of items of Popup menu, positive number indicates default selection
"1": -1,
"2": -1,
"3": -1,
"4": -1,
"5": -1
]
;
以上是关于Javascript的主要内容,如果未能解决你的问题,请参考以下文章
javascript中怎样添加下拉列表框的option到指定位置