クリエイター手抜きプロジェクト[295]Adobe Illustrator CS3/CS4/CS5編 テキストファイル内の文字を配置し保存する
── 古籏一浩 ──

投稿:  著者:


今回は、Illustratorでテキストファイル内の文字を配置し、保存するスクリプトです(ネタの使い回しと言えば使い回しなんですが)。Illustratorの場合も、あらかじめ基本となるAIファイルを作成しておきます。この時に一番上のレイヤーにはポイントテキストを作成して、位置決めや文字サイズ、行揃えを行っておきます。その他のレイヤーには、図形や文字など何を配置しても問題ありません。一番上のレイヤーだけひとつのポイントテキストがあれば動作します。




// テキストファイル内の文字を配置し連番AIファイルで保存する
(function(){
var aiFile = File.openDialog("基本となるAIファイルを選択してください","*");
if (!aiFile){ return; } // キャンセルされたら何もしない
var textFile = File.openDialog("配置するテキストファイルを選択してください","*.txt");
if (!textFile){ return; } // キャンセルされたら何もしない
var saveFolder = Folder.selectDialog("保存先のフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされたら何もしない
var count = 0; // ファイル番号
var flag = textFile.open("r");
if (!flag){
alert("ファイルが読み込めません");
return;
}
while(!textFile.eof){
app.open(aiFile);
var text = textFile.readln(); // 1行読み込む
var layObj = app.activeDocument.layers[0]; // 一番上のレイヤーを指定
layObj.textFrames[0].contents = text;
var saveFile = new File(saveFolder.fullName+"/telop"+count+".ai"); // telop番号.aiという名前で保存する
activeDocument.saveAs(saveFile);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
count++;
}
})();

指定した範囲内に調整して配置したい場合は、以下のようになります。
Illustratorの場合、widthプロパティに表示サイズを入れるという方法もありますが、それだと文字が左揃えでなければ正しく動作しないので、以下のスクリプトでは1文字ずつ文字幅を調整しています。このため、文字数が多くなると誤差などの関係で、指定した幅よりも文字がはみ出してしまいます。範囲指定の値を小さめにしてから、実行してもらうのがよいかと思います。


// テキストファイル内の文字を調整して配置し連番AIファイルで保存する
(function(){
var aiFile = File.openDialog("基本となるAIファイルを選択してください","*");
if (!aiFile){ return; } // キャンセルされたら何もしない
var textFile = File.openDialog("配置するテキストファイルを選択してください","*.txt");
if (!textFile){ return; } // キャンセルされたら何もしない
var saveFolder = Folder.selectDialog("保存先のフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされたら何もしない
var count = 0; // ファイル番号
var flag = textFile.open("r");
if (!flag){
alert("ファイルが読み込めません");
return;
}
var maxSize = 720; // 最大ポイント数
while(!textFile.eof){
app.open(aiFile);
var text = textFile.readln(); // 1行読み込む
var layObj = app.activeDocument.layers[0]; // 一番上のレイヤーを指定
layObj.textFrames[0].contents = text;
var d = layObj.textFrames[0].width;
if (d >= maxSize){ // オーバーフローしている
$.writeln("d="+maxSize / d);
for(var j=0; j<layObj.textFrames[0].characters.length; j++){
layObj.textFrames[0].characters[j].horizontalScale = 100 * (maxSize / d);
}
}
var saveFile = new File(saveFolder.fullName+"/telop"+count+".ai"); // telop番号.aiという名前で保存する
activeDocument.saveAs(saveFile);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
count++;
}
})();

表示範囲は以下の行の720の値を変更してください。

var maxSize = 720; // 最大ポイント数


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/
>

今年度で廃線となる長野県の長野電鉄屋代線。廃線になると知れると、やはりやってくる鉄道マニア。県外から来る人が結構多くいて、混まないうちに撮影に来たと言ってました。まあ、廃線になってしまえば二度と撮れないので。廃線と言っても都会の中の田舎といった感じで、田舎の中の田舎の飯山線とは違う感じでした。飯田線には電波が来ないので、SoftBankのiPhoneなどは使い物になりません。あちこち出かけると結構電波が来なくて、iPhoneは都会の人の持ち物なのかなと思ったり。

来月2日に「Google API Expertが解説する Google Maps APIプログラミングガイド」が発売されます(共著)。こちらも、よろしく。

・jQuery Mobile 1.0RC2例文辞典
< http://www.openspc2.org/reibun/jQuery_Mobile/1.0RC2/
>

・CSS3(スタイルシート Level 3)例文辞典
< http://www.openspc2.org/reibun/CSS3/
>

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199
>

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184
>

・毎度おなじみASCII.jpの連載
「CSS3でFlash並みアニメが作れるSencha Animator」
< http://ascii.jp/elem/000/000/646/646400/
>

・iPhone/iPad × HTML5アプリ制作
< http://www.amazon.co.jp/dp/4797362618
>
< http://bookpub.jp/books/bp/196
>

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/
>

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>
吉田印刷所の「印刷の泉」でも購入できるようになりました。