【问题标题】:Embedded Javascript Code for Adobe Acrobat: TypeError: this.getField is not a functionAdobe Acrobat 的嵌入式 Javascript 代码:TypeError:this.getField 不是函数
【发布时间】:2018-07-11 15:41:14
【问题描述】:

所以我希望在 Document Open 中运行一些 JavaScript 代码,因此我将 .js 文件放入了 Acrobat\JavaScripts 文件夹(在 Program Files 中)。我正在尝试运行以下代码:

function ChangeFont()
{
    var nNumFields = this.numFields; 
    console.println("There are " + nNumFields + " in this document."); 
    var cFieldName; var oField; 
    for(i = 0; i < nNumFields; i++) 
    {
        cFieldName = this.getNthFieldName(i); 
        oField = this.getField(cFieldName);
        oField.textFont = "PTSans";  
    }
}

ChangeFont()

打开 PDF 会运行我插入到同一文件夹中的其他代码,但不是这个(因为字体不会改变)。当手动将此代码粘贴到 Acrobat JavaScript 调试器中时,选择所有代码并按 Ctrl+Enter,它可以完美运行。那么为什么它在 Document open 上不起作用??

我尝试通过制作一个单独的 .js 来隔离问题,该 .js 选择一个特定字段并更改其字体,如下所示:

var f = this.getField("myField");
f.textFont = "PTSans";

将 test.js 放入 JavaScripts 文件夹后,使用 Acrobat 打开 PDF 文档,我立即收到以下错误:

"TypeError: "this.getField" 不是函数。"

再次,我在调试器控制台中手动运行它,它运行良好。

这里发生了什么?我不认为我使用的是 LiveCycle Designer 界面,它只是 Adob​​e Acrobat 10。

编辑:目的是在打开文档时使所有字段都采用某种字体。

【问题讨论】:

  • 你应该尝试放置“调试器;”在“this.getField”之前,再次开始运行并检查 this.getField("myField")。
  • 不幸的是,由于某些原因按钮变灰,我无法检查:/

标签: javascript acrobat


【解决方案1】:

文件夹级别的脚本在 Acrobat 加载时但在文档打开之前运行。 numFields 属性属于尚不存在的 Doc 对象。只需删除最后一行,您就可以通过文档中的按钮运行该功能。

【讨论】:

  • 如删除函数调用?
  • 没有。删除对函数的调用。删除“ChangeFont()”...最后一行。
  • 我明白你的意思并理解为什么它不再工作了,但是我特别需要代码在文档打开时运行。
  • 如果您需要它在文档打开时运行,请将其添加为文档级脚本。打开新文档时没有应用程序级触发器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
相关资源
最近更新 更多