AcrobatDCのスクリプト
梅雨入りしてしまいました。通勤のタイミングで結構雨に降られてます。なんだかず~っと湿気っている気がしてカビ生えそうです。そんなことはどうでも良いってものかのさんにいわれそうなのでこれくらいにしておきます。
ところで皆様、AcrobatDCはJavaScriptが利用可能なのは皆さんご存知の通りです。でもあれって、デバッグも面倒だし、ドキュメントにくっつけてとか面倒くさい事この上ない代物です。
で、今回は、あいつらをメニューに放り込む手法をお届けする事にしました。
今回書いたのはPDFファイルに含まれるページをすべて単ページに分解保存するものです。標準機能でも可能ですが、メニューから選択するだけで簡単に実行可能ですから、それなりに便利に使えます。
//「編集」メニューの一番上にサブメニューを設置
app.addSubMenu(
{
cName: "TenAndArtAITools",
cParent: "Edit", nPos: 0
});
//設置したサブメニューにメニュー項目を設置。
app.addMenuItem(
{
cName: "Extract all Pages to file",
cParent: "TenAndArtAITools",
nPos:0,
cEnable:!1,
cExec: "extractAllPage()"
});
//メニュー項目が選択されたときに実行される関数
extractAllPage = app.trustedFunction(
function ()
{
var re = /.*\/|.pdf$/ig;
var filename = this.path.replace(re,"");
var plen = this.numPages;
var ln = Math.pow(10, (plen).toString().length);
app.beginPriv();
for (var i=0; i<plen; i++)
{
var pn = (ln + i + 1).toString().slice(1);
this.extractPages(
{
nStart: i,
nEnd: plen -1,
cPath : filename + "page" + pn + ".pdf"
});
};
app.endPriv();
app.alert("Done!");
});
こちらのコードが全部です。Applicationクラスにメニュー項目に関するメソッドが存在しますから、それらを利用します。サブメニューを設けて、そこにカスタムメニューを順次追加していくという手順となります。
メニューが選択されたときに実行されるのは、Applicationクラスに含まれるtrustedFunctionを利用します。あとはアクティブなドキュメントの実態はthisで取得できます。実際にページを抽出するのもDocumentクラスのメソッドです。
こうして作ったスクリプトを「.js」の拡張子で名前をつけて保存します。これを
Windows:C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Javascripts
macOS:・/Applications/Adobe Acrobat DC/Adobe Acrobat.app/Contents/Resources/Javascript
にコピーします。macOSはアプリケーションパッケージ内の「/Contents/Resources/Javascript」にあるのでアプリケ―ションアイコンを右クリックしてパッケージを表示させてナビゲートするか⌘+shift+gで上記のパスを入力して移動してください。