javascript - Adobe Acrobat 的嵌入式 Javascript 代码:TypeError:this.getField 不是函数
问题描述
因此,我希望在 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 界面,它只是 Adobe Acrobat 10。
编辑:目的是在打开文档时使所有字段都具有某种字体。
解决方案
文件夹级别的脚本在 Acrobat 加载时但在文档打开之前运行。numFields 属性属于尚不存在的 Doc 对象。只需删除最后一行,您就可以从文档中的按钮运行该功能。
推荐阅读
- python - 统计 - 如何创建特定分布的数据样本
- email - 通过 adb shell 发送电子邮件时如何填写“收件人”字段?
- javascript - 在组件样式加载之前,在 React 头盔中加载我的样式文件
- c++ - 线程安全队列实现:pop() 的高效实现
- python - 如何在 Firebase Cloud Storage 上创建存储桶
- typescript - combineReducers 打字稿没有重载
- flutter - 在 Flutter 的底部工作表中集成 Google Pay
- c# - 为什么我在 .NET 中运行“Add-Migration InitialCreate”时遇到错误?
- java - Java 8 – DateTimeFormatter:格式化 Oracle 日期
- plot - PineScript 在未来创建一个带有 n 根蜡烛的源,用于 Tradingview 中的预测