我在Adobe Acrobat Pro DC自定义项目的中途被引入。此项目的目标是在每个页面的左边缘添加警告。我得到了一个JavaScript,它有一个例外,并要求修复该异常。
代码是:
var inch = 72;
for (var p = 0; p < this.numPages; p++) {
var aRect = this.getPageBox( {nPage: p} );
aRect[0] = 8.25*inch; //how far from the left the box ends
aRect[1] = 0.5*inch; //how high from the bottom the box is
aRect[2] = 7.75*inch; //how far from the left the box starts
aRect[3] = 11.0*inch; //how tall the box is
var f = this.addField("ControlledDoc", "text", p, aRect )
f.rotation = 270;
f.delay = true;
f.textSize = 7.5;
f.textFont = font.HelvB;
f.textColor = color.red;
f.alignment = "center";
f.readonly = true;
f.display = display.visible;
f.delay = false;
}
var myWillSaveScript = 'var f = this.getField("ControlledDoc"); \r'
+ 'f.value = "This is an electronic controlled copy of a paper based document management system. When printed on the copy machine it becomes an uncontrolled paper copy valid until the end of the printing day."; \r';
this.setAction("WillSave", myWillSaveScript);
当文档长度超过一页时,会出现问题。按预期在每个页面上复制ControlledDoc
字段。每个页面都有一个ControlledDoc#n-1
字段,其中n是页码。在第一页上,f.rotation
设置被保留并显示在UI中,因为“属性”对话框中的“方向”下拉列表设置为270.但是,在第二页和后续页面上,“方向”设置为0.我可以手动编辑文档并将Orientation设置为270,但这违背了使用JavaScript自动执行操作的目的。
我是使用JavaScript控制Acrobat Pro DC的新手,所以如果我错过了一些愚蠢的东西,我不会感到惊讶......
我需要更改什么才能使旋转设置粘在第二页和后续页面上?
答案 0 :(得分:1)
字段属性可以在字段级别上(对于字段的所有副本都相同,具有相同的nam),或者在窗口小部件级别上(可以与字段的副本不同以复制字段)。
Acrobat JavaScript文档包含这些属性的列表。不幸的是,这两个列表(字段级别和窗口小部件级别)不包含rotation
属性。这意味着,我们并不真正知道它是字段还是小部件级别。根据您的描述,我感觉它是小部件级别。
您可以尝试为每个页面创建单独的字段。你会用
行来做到这一点var f = this.addField("ControlledDoc." + p, "text", p, aRect) ;
关于delay
属性:我总是使用doc.delay
属性(而不是field.delay
),并且因为它在循环之外,所以它可以提供最大的性能增益。但是,如果脚本从循环内退出,我将不得不通过控制台将延迟设置为false。根据我的经验,这将创建所有外观(但为了找出,我们必须进入该页面,然后立即创建...)。
答案 1 :(得分:0)
我假设您在运行脚本时在第1页上进行了操作。这就是第一页看起来正确的原因。
delay属性,如果为false,则告诉Acrobat延迟更新字段的外观,直到将其设置为true。当您将字段添加到页面时,您要告诉Acrobat在设置完所有设置之前不要生成外观......这样就行了......但是,我怀疑,您从未访问过后续内容即使现在将delay属性设置为true,页面也不会为这些页面更新外观。只需拉出设置延迟属性的两行就可以了。