スクリプト面から見たInDesign CS5の新機能(3)EPSText

バージョンが上がって追加されたオブジェクトは、新機能をみれば大体想像がつくものですが、中には全く想像がつかないものもあります。こういうときはあてずっぽうで色々試してみるしかない。
このEPSTextもそう。InDesign CS5の新機能でEPSTextと関連がありそうな機能は見当たらないので、とにかくEPSと言えばIllustratorと思い、Textを手がかりに色々動かして見る。結果、これは「イラストレータからコピーしてきたテキスト」だと判明。何で今更こんなオブジェクトが? と思ったら、実はこれはPageItemのひとつなのに今まで無視されてきたものでした。

もしかするとIllustrator以外のアプリケーションでもAICB形式でクリップボードに保存できるなら、それをInDesignにペーストしたときにEPSTextになる可能性はあるのですが、今のところ他にも調べなきゃいけないオブジェクトがあるのでこの辺はスルー。とりあえずオブジェクトモデル上では「イラストレータからコピーしてきたテキスト」と表現することにしよう。

では、InDesign CS3とCS5で比較してみます。まず、環境設定。InDesign側では[ペースト中にPDF形式を優先する]のチェックを外します。Illustrator側ではAICB形式を有効にします。

これで準備完了。あとはIllustratorで適当に文字を含んだ絵を描いてコピー、InDesignの新規ドキュメントにペーストする。

Illustratorで作ったもの

InDesignにペーストすると、グループ化されて配置されるので、グループ解除を行う。CS3の場合では、このように。

画面上、文字ずれが発生しているが今回のテーマとは関係ないので無視。

ここで次のスクリプトを実行。

var doc=app.activeDocument;
for (i = 0; i < doc.allPageItems.length; i++ ){
    $.writeln(doc.allPageItems[i].constructor.name);
    }
$.writeln(i);

するとExtendScriptToolkitのコンソール画面に

と表示されて、テキスト部分は無視されていることが分かる。これをCS5で同様に行うと、

画面上で文字化け文字ずれが発生しているが、これも今回のテーマと関係ないので無視。そして先ほどのスクリプトを実行させると

という具合にオブジェクトとして認識されたのでした。

でも、今の所できるのは拡大縮小、回転、反転など。テキストとしての属性を取り出せたらもっといいのにな。