「this.」をJavascriptから外す

マニュアルに書いている通りに実行しているのに動作環境で結果に差がある現象に遭遇しました。

  1. AcrobatのJavascriptデバッガー :正常
  2. OLE起動のAcrobat JavaAScript :一部で動作不良

ページ中に存在する複数の単語が1つに連結されて返される不具合です。Quads座標も連結されて返されます。連結された座標はどれがテキストに相当するかが判断できません。

以下がその不具合が出たJavascriptです。

// 先頭頁の単語を座標と共に全て出力
var numWords = this.getPageNumWords(0);
for (var j = 0; j < numWords; j++){
nWord = this.getPagenWord( 0,j );
aQuads= this.getPagenWordQuads( 0,j );
console.println(j + ” [“ + nWord + “](“ + nWord.length + “) = “ + aQuads);
}

頭の「this.」を外したところ、共に問題なく動作するようになりました。

// 先頭頁の単語を座標と共に全て出力
var numWords = getPageNumWords(0);
for (var j = 0; j < numWords; j++){
nWord = getPagenWord( 0,j );
aQuads= getPagenWordQuads( 0,j );
console.println(j + ” [“ + nWord + “](“ + nWord.length + “) = “ + aQuads);
}

JavaScript で Doc オブジェクトにアクセスする時に「this オブジェクトは、通常、基盤となる文書の Doc オブジェクトを表します。」という記述がマニュアルには有ります。サンプルを見ると

// この文書のページ数を取得
var nPages = this.numPages;
// トリミング領域を取得
var aCrop = this.getPageBox();

動作環境での違い。

  • Acrobat XI:Acrobat OLEで一部動作不良
  • Acrobat DC:共に正常

Acrobat DCでは共に問題なく動作します。上記以外のバージョンは未確認です。

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行する

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)] -> [デフォルトのツール] をマウスで選択します。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

② 更にメニューから [表示(V)] -> [ツール(T)] -> [JavaScript(V)] をマウスで選択します。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

③ 画面右下の [JavaScript デバッガー] をマウスでクリックします。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

④ 以下のJavaScript デバッガー画面が表示されます。

※事前に実行したいJavaScript コードをクリップボードにコピーして置きます。

下のコンソールボックスにマウスカーソルを持って行って、マウスでクリックします。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑤ 以下のダイアログボックスが表示されます。

はい(Y)」をマウスでクリックします。

※表示されない場合もあります。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

Adobe Acrobat
インタラクティブコンソールは現在使用できません。使用可能にしますか?
はい(Y) いいえ(N)

 

<注意>

以下の様に画面下のボックスに何かが表示されていたら消す必要があります。

画面右下のゴミ箱ボタンをマウスでクリックします。

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑥ 再度JavaScript デバッガー画面の下のコンソールボックスをマウスで右クリックします。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑦ 以下のポップアップメニューが表示されるので、[ペースト(A)] を選択します。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑧ 事前にクリップボードにコピーしておいたJavaScript コードが下のコンソールボックスに張り付きます。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑨ 貼り付けたJavaScript コード全体を選択状態にします。

注意:すべてのJavaScript コードを完全に選択してください。
キーボードの[Ctrl] + [A] でも出来ます。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑩ 上記のように選択状態になったら、

キーボード上の [Ctrl] キーを押したままで [Enter] を押します。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑪ JavaAcript コードが実行され、その結果もコンソールボックス上に表示されます。

結果が表示されない、実行されない場合は、

  1. JavaScriptコードに間違いが有る
  2. 選択状態に漏れが有る
  3. 上記⑩の操作が間違っている、うまくできてない -> もう一度行う

です。 再度確認してください。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑫ 次はJavaScript の実行結果を取り出します。

結果は同じコンソールボックスにJavaScript コードの後に入っています。

キーボードの [Ctrl] + [A] キーを押して、全てを選択状態にします。

そして、マウスの右クリックをして、表示されるポップアップメニューから、[コピー(C)] を選択します。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑬ クリップボードに結果がコピーされます。

コンソールボックスの内容を消します。

画面右下のゴミ箱ボタンをマウスでクリックします。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑭ JavaScript デバッガー画面も不要なので消します。

 

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

⑮ クリップボードの内容をテキストエディタに貼り付けます。

前にJavaScript コード、その後に実行結果が入っています。

Acrobat JavaScript デバッガー・コンソールでJavaScriptを実行

 

 

Acrobat 5 の場合

メニューから [ツール(T)] -> [JavaScript(J)] -> [コンソール(C)…] をマウスで選択します。

 

Acrobat 5 のJavaScript デバッガー・コンソールでJavaScriptを実行

 

Acrobat 6 の場合

メニューから [アドバンスト(A)] -> [JavaScript(J)] -> [デバッガ(B)…] をマウスで選択します。

 

Acrobat 6 のJavaScript デバッガー・コンソールでJavaScriptを実行

 

Acrobat 7 の場合

メニューから [アドバンスト(A)] -> [JavaScript(J)] -> [デバッガ(B)…] をマウスで選択します。

 

Acrobat 7 のJavaScript デバッガー・コンソールでJavaScriptを実行

 

Acrobat 8 の場合

メニューから [アドバンスト(A)] -> [文書処理(D)] -> [バッチ処理(B)…] をマウスで選択します。

 

Acrobat 8 のJavaScript デバッガー・コンソールでJavaScriptを実行

 

Acrobat 9 の場合

メニューから [アドバンスト(A)] -> [文書処理(D)] -> [バッチ処理(B)…] をマウスで選択します。

 

Acrobat 9 のJavaScript デバッガー・コンソールでJavaScriptを実行

 

Acrobat X (10) の場合

 

メニューから [表示(V)] -> [ツール(T)] -> [JavaScript(V)] をマウスで選択します。

後はAcrobat XI の③からの操作となります。

 

Acrobat X (10) のJavaScript デバッガー・コンソールでJavaScriptを実行

PDFドキュメント(ファイル)を開いた時のイベントは無い

残念だが、文書(PDF)を開いた時のイベントは無い。印刷や閉じる時のイベントは登録できる。メニューから、[アドバンスト] -> [文書処理] -> [文書のアクションを設定] を選択クリックする。
メニュー選択

すると以下の「アクションの設定」画面が表示される。ここでAcrobat JavaScriptが入力できる。
文書レベルのイベント

PDFドキュメント(ファイル)を開いた時のイベントが無いのは、セキュリティ上の問題と予測される。俗に言うクラックされるのを防いでいるのでは無いかと勝手に予測している。

注意)上記は誤りです。コメントを見てください。PDFドキュメント時にJavaScriptの実行は可能です。動作も確認済みです。 ※環境Adobe Acrobat Pro v8.1.3 + Windows XP Pro

テスト失敗?

Excel VBAからOLE経由でPDFファイルを開いて、イベントを発生させ、同時にAcrobat JavaScriptを実行させようとしたが、うまくいかない。イベントが発生しない。それ以前に、以前画面表示出来たExcel VBAでPDFの画面表示が出来ない。

  • Excel起動
  • Excel VBA起動
  • Excel VBAから、OLE経由でAcrobatをコントロールし、PDFファイルを開く。
  • 同時にPDF内部にあるイベントにJavaAScriptを入れて置き、イベントと同時に実行させる。

が、出来ない。 どこが以前と違うんだ。

キーボード

ブラウザ画面の文字サイズを変更するショートカットキー

  1. [ CTRL ] + [ + ]  :  文字を大きく
  2. [ CTRL ] + [ ]  :  文字を小さく

Shortcut Keys

  1. [ CTRL ] + [ + ]  :  Up the font size
  2. [ CTRL ] + [ ]  :  Down the font size

当サイトの目的

当サイトは現時点で、 Acrobat JavaScript の使用方法の全貌を見極めるのが、最終目的では無い。詳細を書くとややこしいので省略させてもらうが、PDFドキュメント内の注釈をテキストファイルで出力するのが目的だ。更に汎用性を持たせる為に、外部プログラムからプログラミングコントロールして、指定したPDFドキュメント(ファイル)からそれを実行させる。これが当初の目的としている。実はこの部分が一番難しいと思っている。 途中で部分的に手段(手順)が変わるかもしれないが、それを目標とする。

よって、一部解説が順飛ばしになるかもしれない。その点はご勘弁して頂きたい。現時点(2008/12/05)では、質問に答えるべき知識は無いので、コメントは控えて頂きたい。

但し、情報提供に関するコメントは歓迎する。間違いの指摘も歓迎させて頂く。その時はよろしくお願いしたい。

キーボード

ブラウザ画面の文字サイズを変更するショートカットキー

  1. [ CTRL ] + [ + ]  :  文字を大きく
  2. [ CTRL ] + [ ]  :  文字を小さく

Shortcut Keys

  1. [ CTRL ] + [ + ]  :  Up the font size
  2. [ CTRL ] + [ ]  :  Down the font size