私はAdobe Acrobat Pro用にカスタムスクリプトをいくつか書きました(科学研究のためにPDFをたくさん扱っています)。それらはMacとWindowsで問題なく動作します。LinuxにはAdobe Readerしかありませんが、それでも起動時にファイルメニュー内にメニュー項目を表示させることができました。これは、Readmeファイルのスクリーンショットで示されています。https://github.com/lmmx/クロップサイエンス(Windows の場合)。
Acrobat のドキュメントには Linux に関する記述がないため (おそらく、完全な Acrobat ではなく Reader のみが利用可能であるため)、クリック時に実行するための適切な権限を付与するためにファイルをどこに配置すればよいのか、少し困惑しています。
学術誌 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 は発生していないと推測します。ボタンの 1 つをクリックすると参照される 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 ドキュメントで、setPageBoxes が Reader で使用できるかどうかを確認することもできます (Reader でスクリプトを実行していると仮定します)。