選択されたテキストフレームの文字を表示する
ESTKの基本的な操作方法が分かったところで、実際にInDesignからJavaScriptで青空文庫形式に出力してみましょう。今回はASCII.jpの連載「今すぐ始める電子書籍制作入門」の第3回で使用したInDesignのデータを利用します。
- ・今すぐ始める電子書籍制作入門 第3回
- http://ascii.jp/elem/000/000/548/548935/
最初に、InDesign上で選択されたテキストフレーム内の文字を抜き出し、単純にアラートに表示してみましょう。InDesignで選択されたフレームの情報はselection配列に格納されます。selectionはapp.selectionとapp.activeDocument.selectionの両方にあり、どちらを参照しても同じ結果になりますが、ここではアクティブドキュメントで選択されたという意味を示したいのでapp.activeDocument.selectionを参照します。
selectionは配列ですので、最初に選択されたフレームの情報はselection[0]で参照できます。テキストフレームの場合、表示されている文字はcontentsプロパティに入っています。
サンプル1は選択されたテキストフレーム内の文字をアラートダイアログに表示するスクリプトです。
●サンプル1
// 選択されたテキストフレーム内の文字を表示
var sel = app.activeDocument.selection;
alert(sel[0].contents);
テキストフレーム内の文字は必ずしも1ページに収まっているとは限りません。2ページ目に続いているかもしれませんし、小説などであればかなりのページ数に渡って続くはずです。単純にテキストフレームのcontentsプロパティにアクセスした場合は表示されている部分だけが取得されます。テキストフレーム内のすべての文字を参照したい場合はparentStory.contentsとします。
サンプル2は、選択されたテキストフレーム内のすべての文字をアラートダイアログに表示します。
●サンプル2
// 選択されたテキストフレームの全ての文字を表示
var sel = app.activeDocument.selection;
alert(sel[0].parentStory.contents);