スクリプト面から見た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で同様に行うと、

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

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

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