「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では共に問題なく動作します。上記以外のバージョンは未確認です。