Adobe Acrobat Pro DC JavaScript 字段属性未传播

Adobe Acrobat Pro DC JavaScript field properties not propagating

我被带入了 Adob​​e 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. 我可以手动编辑文档并将方向设置为 270,但这违背了使用 JavaScript.

实现自动化的目的

我是使用 JavaScript 控制 Acrobat Pro DC 的新手,所以如果我遗漏了一些愚蠢的东西,我不会感到惊讶...

我需要更改什么才能使旋转设置固定在第二页和后续页面上?

我假设您 运行 脚本时位于第 1 页。这就是它在第一页上看起来正确的原因。

延迟 属性 为假时,告诉 Acrobat 延迟更新字段的外观,直到它设置为真。当您将字段添加到页面时,您是在告诉 Acrobat 在设置所有设置之前不要生成外观……没关系……但是,我怀疑您永远不会访问后续页面,因此外观永远不会出现即使延迟 属性 现在设置为 true,也会为这些页面更新。只需拉出设置延迟的两条线 属性 就可以了。

字段属性可以在字段级别(对于字段的所有副本都相同,具有相同的名称),或在小部件级别(可以不同于字段的副本到字段的副本)。

Acrobat JavaScript 文档有这些属性的列表。不幸的是,这两个列表(字段级别和小部件级别)不包含 rotation 属性。这意味着,我们真的不知道它是字段级别还是小部件级别。根据你的描述,我感觉是widget级别的。

您可以尝试为每个页面创建一个单独的字段。您可以使用行

var f = this.addField("ControlledDoc." + p, "text", p, aRect) ;

关于delay属性:我总是使用doc.delay属性(而不是field.delay),因为那个外面循环,以便它可以提供最大的性能增益。但是,如果脚本从循环中退出,我将不得不通过控制台将延迟设置为 false。根据我的经验,这将创建所有外观(但为了找出答案,我们必须进入该页面,然后立即创建它们……)。