InDesignのテキストフレームの連結と、連結解除をExtendScriptで実行するコマンドの紹介です。
「連結する」「解除する」というコトバから想像すると、メソッドを使うような気がしますが、そうではありません。プロパティを使います。
公式サイト Adobe InDesignを詳しく見てみる
サンプルドキュメントの準備
今回のコードサンプルの実行には、アクティブドキュメントを使っています。
InDesignのドキュメントを開いておきます。
それ以外は何の前準備もしていません。
コードサンプル
次のコードでは、新規にテキストフレームを3つ作成して、左から順に並べ、左から順に連結します。
#target indesign
var objDoc = app.activeDocument;
// テキストフレームを3つ作成
var objTxtFrm01 = objDoc.textFrames.add();
var objTxtFrm02 = objDoc.textFrames.add();
var objTxtFrm03 = objDoc.textFrames.add();
// 位置と大きさを変更
objTxtFrm01.visibleBounds = ["50mm","30mm","100mm","80mm"];
objTxtFrm02.visibleBounds = ["50mm","90mm","100mm","140mm"];
objTxtFrm03.visibleBounds = ["50mm","150mm","100mm","200mm"];
// 各テキストフレームに文字を入力
objTxtFrm01.contents = "A";
objTxtFrm02.contents = "B";
objTxtFrm03.contents = "C";
// 01,02,03の順でテキストフレームを連結
objTxtFrm01.nextTextFrame = objTxtFrm02;
objTxtFrm02.nextTextFrame = objTxtFrm03;
ここでは、とりあえずテキストフレームを add() の引数なしで作成したあとに、位置と大きさを変更しています。
実行結果


サンプルコードの中で、実際に連結しているのは最後の2行です。
objTxtFrm01.nextTextFrame = objTxtFrm02;
objTxtFrm02.nextTextFrame = objTxtFrm03;
まず、1番目のテキストフレームのプロパティ nextTextFrame に、2番目のテキストフレームを代入します。
次の2番目と3番目のテキストフレームの連結も同様に、nextTextFrame を使って連結しています。
「A」「B」「C」の文字は、サンプルコードでは各テキストフレームに1文字ずつ入力しましたが、連結されたことで先頭のテキストフレームに入りました。
テキストフレームの連結にかかわるプロパティは、次の4つがあります。
- startTextFrame:先頭のテキストフレーム
- endTextFrame:最後のテキストフレーム
- previousTextFrame:前のテキストフレーム
- nextTextFrame:次のテキストフレーム
連結を解除するときは、例えば次のコードのように null を代入します。
objTxtFrm01.nextTextFrame = null;
こうすると、1番目と2番目の連結が切れて、1番目のテキストフレームだけが単独の状態になります。
公式サイト Adobe InDesignを詳しく見てみる
コメント