Adobe Reader cParent 参数 TypeError,“参数类型无效”,但菜单项显示

Adobe Reader cParent 参数 TypeError,“参数类型无效”,但菜单项显示

我为 Adob​​e Acrobat Pro 编写了一些自定义脚本(我处理了很多 PDF 文件用于科学研究),它们在 Mac 和 Windows 上运行良好。Linux 只有 Adob​​e Reader,但我仍然设法让菜单项在启动时显示在文件菜单中,如 Readme 文件的屏幕截图所示https://github.com/lmmx/CropScience(在 Windows 上)。

由于 Acrobat 文档中没有提及 Linux(大概是因为只有 Reader 可用而不是完整的 Acrobat),我有点不知道将文件放在哪里才能允许它们具有足够的权限来运行(单击时)。

对应学术期刊《Nature》设置的示例脚本“CropPrintNature.js”:

app.addMenuItem({cName:"Crop for Nature (articles and ed.)",cParent:"Crop and Print", cExec:"for(var p=0;p<n();p++){o=a().getPageBox('BBox',p);o[0]+=34;o[1]-=37;o[2]-=33;o[3]+=22;if(p==0){o[1]-=38}for(b=0;b<4;b++){a().setPageBoxes(d[b],p,p,o)}};this.print();"});

我将它们从 /opt/Adobe/Reader9/Reader/Javascripts 移至 ~/.adobe/Acrobat/9.0/Javascripts 但仍然不起作用(但我认为这应该是正确的位置,因为它是特定于用户的而不是系统范围的。

在后一个文件夹中,glob.js 是空的,而 glob.settings.js 只包含��({})

我猜测没有任何 TypeError - 我可以看到裁剪和打印按钮应该对应于单击其中一个按钮时引用的 cParent 元素 - 而是尝试访问超出其权限级别的东西作为最后一条消息(单击按钮时记录到控制台)。

我需要移动它们,或者添加一些配置文件吗……?控制台日志的结尾如下:

App.addMenuItem:1:Folder-Level:User:CropPrintAnnuRev.js
 ===> Parameter cParent.
TypeError: Invalid argument type.
App.addMenuItem:1:Folder-Level:User:CropPrintBriefBioinfo.js
 ===> Parameter cParent.
TypeError: Invalid argument type.
App.addMenuItem:1:Folder-Level:User:CropPrintJMolBioEarly.js
 ===> Parameter cParent.
TypeError: Invalid argument type.
App.addMenuItem:1:Folder-Level:User:CropPrintAAutoBoundaries.js
 ===> Parameter cParent.
NotAllowedError: Security settings prevent access to this property or method.
Doc.setPageBoxes:1:Menu Crop for Nature Rev. Mol. Cell. Bio.:Exec

答案1

您指定的 cParent 不是 Acrobat/Reader 中的菜单项。您必须指定一个有效的菜单项。

另外,您可以检查 Acrobat JavaScript 文档中是否包含可用于 Reader 的 setPageBoxes(假设您已在 Reader 中运行该脚本)。

相关内容