公開日:2017年4月21日
「テキスト支給なし」「キャプチャに引き出し線テキストが必要」という体裁が多い書籍への対策として、「1.選択したテキストフレームひとつずつに」→「2.読み込んだ.txtファイルから1行ずつ」→「3.テキストフレームに配置する」の手順でテキストを流すスクリプトです。テキストフレームに配置する順序は上から順にざっくりと。
「テキストが支給されていない」という条件がある以上、入力だけは手でやらないといけませんが、何より面倒なのはその後のコピペ地獄なので、これで少しは楽になる…(といいな)
//選択オブジェクトの処理順並び替え
function sortselObj(a, b){
var y1 = a.visibleBounds[0];
var x1 = a.visibleBounds[1];
var y2 = b.visibleBounds[0];
var x2 = b.visibleBounds[1];
if (y1 > y2) {
return 1;
} else if (y1 < y2) {
return -1;
} else if (y1 == y2) {
return 0;
}
}
////////////
//ファイルを読み込む
var DocPath = app.activeDocument.filePath;
var DocPathdec =decodeURI(DocPath);//パスを読めるように変換
var path=new File(DocPathdec)
var readfile=path.openDlg("テキストファイルを指定してください","*.txt");
var filename = readfile;
var fileObj = new File(filename);
var TX = new Array();
fileObj.open("r"); // 読み込みモード
while(!fileObj.eof) {
TX.push(fileObj.readln());
}
fileObj.close();
//////////////
var selCount=app.activeDocument.selection.length;
if((TX.length==selCount)||(TX.length>selCount)){//フレーム数とテキスト行数が一致する、またはテキストの方が多い場合
for(var i = 0; i < selCount; i++){
var selObj = app.activeDocument.selection;
selObj.sort(sortselObj)//配列の順序を替える
selObj[i].contents=TX[i]
}
}
if(TX.length < selCount){//フレーム数の方がテキストより多い場合
for(var i = 0; i < TX.length; i++){
var selObj = app.activeDocument.selection;
selObj.sort(sortselObj)//配列の順序を替える
selObj[i].contents=TX[i]
}
}
}