Acrobat の JavaScript デバッガーで JavaScript が実行できます。
JavaScript デバッガーのコンソールボックスで JavaScript を実行し、その結果を取得する方法を手順で示します。
実行する JavaScript は以下で、結果はコンソールに出力されます。
//(p.126) メニュー項目をコンソールに表示 function FancyMenuList(m, nLevel) { var s = “”; for (var i = 0; i < nLevel; i++) s += ” “; console.println(s + “+-“ + m.cName); if ( m.oChildren != null ) for ( var i = 0; i < m.oChildren.length; i++ ) FancyMenuList(m.oChildren[i], nLevel + 1); } var m = app.listMenuItems(); for ( var i=0; i < m.length; i++ ) FancyMenuList(m[i], 0); |
下にAcrobat 5 , 6 , 7 , 8 , 9 , X (10) も簡単に紹介します。
Acrobat XI (11.0) で JavaScript を実行する手順と方法
① Acrobat XI のメニューから [表示(V)] -> [ツールセット(O)] -> [デフォルトのツール] をマウスで選択します。
② 更にメニューから [表示(V)] -> [ツール(T)] -> [JavaScript(V)] をマウスで選択します。
③ 画面右下の [JavaScript デバッガー] をマウスでクリックします。
④ 以下のJavaScript デバッガー画面が表示されます。
※事前に実行したいJavaScript コードをクリップボードにコピーして置きます。
下のコンソールボックスにマウスカーソルを持って行って、マウスでクリックします。
⑤ 以下のダイアログボックスが表示されます。
「はい(Y)」をマウスでクリックします。
※表示されない場合もあります。
Adobe Acrobat
インタラクティブコンソールは現在使用できません。使用可能にしますか?
はい(Y) いいえ(N)
<注意>
以下の様に画面下のボックスに何かが表示されていたら消す必要があります。
画面右下のゴミ箱ボタンをマウスでクリックします。
⑥ 再度JavaScript デバッガー画面の下のコンソールボックスをマウスで右クリックします。
⑦ 以下のポップアップメニューが表示されるので、[ペースト(A)] を選択します。
⑧ 事前にクリップボードにコピーしておいたJavaScript コードが下のコンソールボックスに張り付きます。
⑨ 貼り付けたJavaScript コード全体を選択状態にします。
注意:すべてのJavaScript コードを完全に選択してください。
キーボードの[Ctrl] + [A] でも出来ます。
⑩ 上記のように選択状態になったら、
キーボード上の [Ctrl] キーを押したままで [Enter] を押します。
⑪ JavaAcript コードが実行され、その結果もコンソールボックス上に表示されます。
結果が表示されない、実行されない場合は、
- JavaScriptコードに間違いが有る
- 選択状態に漏れが有る
- 上記⑩の操作が間違っている、うまくできてない -> もう一度行う
です。 再度確認してください。
⑫ 次はJavaScript の実行結果を取り出します。
結果は同じコンソールボックスにJavaScript コードの後に入っています。
キーボードの [Ctrl] + [A] キーを押して、全てを選択状態にします。
そして、マウスの右クリックをして、表示されるポップアップメニューから、[コピー(C)] を選択します。
⑬ クリップボードに結果がコピーされます。
コンソールボックスの内容を消します。
画面右下のゴミ箱ボタンをマウスでクリックします。
⑭ JavaScript デバッガー画面も不要なので消します。
⑮ クリップボードの内容をテキストエディタに貼り付けます。
前にJavaScript コード、その後に実行結果が入っています。
Acrobat 5 の場合
メニューから [ツール(T)] -> [JavaScript(J)] -> [コンソール(C)…] をマウスで選択します。
Acrobat 6 の場合
メニューから [アドバンスト(A)] -> [JavaScript(J)] -> [デバッガ(B)…] をマウスで選択します。
Acrobat 7 の場合
メニューから [アドバンスト(A)] -> [JavaScript(J)] -> [デバッガ(B)…] をマウスで選択します。
Acrobat 8 の場合
メニューから [アドバンスト(A)] -> [文書処理(D)] -> [バッチ処理(B)…] をマウスで選択します。
Acrobat 9 の場合
メニューから [アドバンスト(A)] -> [文書処理(D)] -> [バッチ処理(B)…] をマウスで選択します。
Acrobat X (10) の場合
メニューから [表示(V)] -> [ツール(T)] -> [JavaScript(V)] をマウスで選択します。
後はAcrobat XI の③からの操作となります。
初めまして。Acrobatのjavascriptに関して色々と探していたらたどり着きました。大変興味深い記事で参考になりました。
いきなりで大変ぶしつけな質問で恐縮ですが、「Acrobat JavaScriptが存在するか/しないか」を検知する方法はありますでしょうか?C や PHP,どの言語でも構いません。PDFを投げて「Acrobat JavaScriptが存在する/しない」と言うものが取得ができないか模索しております。
古い記事等を見て入るとアクションスクリプトやjavascriptはCatalog/OpenAction 辞書と言うカテゴリ階層に集約され、記述されて文書のロード時に実行される。と言う事は分かったのですが、Catalog/OpenAction と言う階層が参照できる方法がなく、また文献も古いため本当に合ってるのか分かりません。
何か方法がありましたらご教授頂けたらと思います。
yosioka さん はじめまして。
取り急ぎ、ザッと調べた範囲で返答させて頂きます。
POPPLER : PDFINFO の使い方
に書かれている 「-js」オプション を指定すると、出力に
① 「JavaScript: yes/no」でJavascriptの有無が表示されます。
「yes」又は「no」での判断します。
② Acrobat JavaScript そのものも出力されます。
「PDF version:」の次行以降の有無で判断できると思います。
POPPLER : PDFINFOはコマンドラインのツールなのでどの言語からでも起動できます。また、未確認ですがWindows以外でも動作可能みたいです。
コチラのサンプルを参考にしてください。
市販のPDFツールは未調査です。
それ以外に何か有れば、ココに書きますが・・。タブン、無いと思います。
VBAでのコマンドライン・サンプルは「関数:コマンドラインの起動」を参考にしてください。
Poppler については先にコチラを御覧ください。
参考になれば幸いです。
★2017/1/18 9:03 追加
・Popplerのバージョンにより動作が変わります。0.45では①は表示されますが、最新0.50では原因不明で何も出ません。安定動作する0.45をオススメします。
※以下はサイト管理人の個人的なメモ : よって見なくても結構です。
・Catalog/OpenActionについて
http://buttaiya.com/Shop/PDFAnalyzer/PdfAnalyzeGuide2.pdf#page=13
http://www.pdf-tools.trustss.co.jp/Syntax/catalog.html
・PDF内部は階層構造になっている。その階層内でJavascriptの階層[らしき]が存在するが、バイナリーになっている場合はそれをテキスト形式に変換しないと判断できない。またこの手の変換は通常では無理。また階層を見るということはPDF仕様書(PDFの内部構造)に熟知してないといけない。このPDF仕様は英語版でしかも数百ページにもなる+超難解。よってツール、又はAcrobatアプリ本体の機能を使わないとAcrobat JavaScriptの存在有無は判断できない。と、思う。(汗
Acrobatアプリ本体の場合はJavaScriptコンソール内にScriptが存在するかどうか、だけ。