テスト失敗?

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

PDFのページを開いた時に実行されるAcrobat Java Script のサンプル(その2)

前の「PDFのページを開いた時に実行されるAcrobat Java Script のサンプル」はどのようにしてイベントとして登録されていたのか不思議だった。が、その詳細がやっと判った。

  1. まずは「ページサムネイル」表示にAcrobatの表示を変更する。
  2. 「ページサムネイル」の該当ページをマウスで選択して、右クリックする。
  3. そのマウス上にポップアップメニューが表示される。
  4. そこから「ページのプロパティ」を選択クリックする。

「ページのプロパティ」表示操作

そうすると以下の「ページのプロパティ」画面が表示される。「アクション」タグを選択(クリック)すると、以下の様に既に「ページを開く」に「JavaScriptを実行」が設定されている事が分かる。「JavaScriptを実行」部分をマウスでクリックして選択状態にする。そして最下部の「編集」ボタンをクリックする。

「ページのプロパティ」の「アクション」タグ

以下のAcrobat JavaScriptを入力する画面が表示される。※既に入力されているが。
Acrobat Java Script 入力画面

上記のAcrobat JavaScriptが表示されている。ここで入力された内容はPDF内部では以下の様になる。

//————————————————————-
//—————–XMLタグは編集できません——————–
//————————————————————-

//<Page-Actions>
//<ACRO_source>Page1:ページを開く:Action1</ACRO_source>
//<ACRO_script>

/ 頁を開いた時にJava Scriptを実行する例 /

app.alert(“PDFの頁が開かれました。★”);
//</ACRO_script>
//</Page-Actions>
 

上記のようなXMLタグが付加されてPDFドキュメントにイベント(JavaScript)という形で内部に保存される。<Page-Action>でネット検索しても、この意味を見つけられない理由がこれで分かった。このXMLタグはAcrobat、又はAcrobat Readerが管理しているものであり、ユーザーが触るものでは無いからだ。コメントにある様に「XMLタグは編集できません」とあるが、これは「XMLタグは編集しては絶対だめです」と言っている事を意味する。つまり資料として公開するべきモノではなく、同時に変更してはいけないものだと言う事だ。

PDFのページを開いた時に実行されるAcrobat Java Script のサンプル

JavaScript例(2)

//————————————————————-
//—————–XMLタグは編集できません——————–
//————————————————————-
//<Page-Actions>
//<ACRO_source>Page1:ページを開く:Action1</ACRO_source>
//<ACRO_script>

/ 頁を開いた時にJava Scriptを実行する例 /
app.alert(“PDFの頁が開かれました。”);
//</ACRO_script>
//</Page-Actions>

【実行結果】
実行結果

【補足】

  • <Page-Actions>」タグがページを開いた時のイベント指定になっている。
  • /* 頁を開いた時にJava Scriptを実行する例 */ でなく
    / 頁を開いた時にJava Scriptを実行する例 / でもエラーにならない。