Adobe Photoshop CS3/CS4/CS5編 テキストファイル内の文字を調整して配置しPSDで保存する

今回は前回のスクリプトに文字を調整する部分を追加したものです。これまでと同じように基本となるPhotoshopデータを用意しておく必要があります。また、テキストレイヤーを非表示にしておくと、若干高速に処理されます。


// テキストファイル内の文字を連続配置し1つのPSDファイルとして保存する
(function(){
var psdFile = File.openDialog("基本となるPSDファイルを選択してください","*.psd");
if (!psdFile){ return; } // キャンセルされたら何もしない
var textFile = File.openDialog("配置するテキストファイルを選択してください","*.txt");
if (!textFile){ return; } // キャンセルされたら何もしない
var saveFile = File.saveDialog("保存するPSDファイル名を入力してください");
if (!saveFile){ return; } // キャンセルされたら何もしない
var maxSize = 720; // 最大ピクセル数
// PSD形式保存オプション
psdOpt = new PhotoshopSaveOptions();
psdOpt.alphaChannels = true;
psdOpt.annotations = true;
psdOpt.embedColorProfile = true;
psdOpt.layers = true;
psdOpt.spotColors = true;
var flag = textFile.open("r");
if (!flag){
alert("ファイルが読み込めません");
return;
}
app.open(psdFile);
var s = (new Date()).getTime();
while(!textFile.eof){
var text = textFile.readln(); // 1行読み込む
var layObj = app.activeDocument.layers[0]; // 一番上のレイヤーを複製
layObj.textItem.contents = text;
var x1 = layObj.bounds[0].value;
var x2 = layObj.bounds[2].value;
var d = x2 - x1;
if (d >= maxSize){ // オーバーフローしている
$.writeln("d="+maxSize / d);
layObj.textItem.horizontalScale = 100 * (maxSize / d);
}
layObj.duplicate();
}
layObj.remove();
var e = (new Date()).getTime();
$.writeln((e-s)/1000+"秒かかりました");
activeDocument.saveAs(saveFile, psdOpt, true, Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
})();
DVサイズではなくFullHDサイズにする場合は以下のように数値を変更してください。4Kサイズでも同様に以下の行の数値さえ変更すれば対応させることができます。文字の間隔などもあるので、実際にはより小さい値を指定した方がよいでしょう。

var maxSize = 720; // 最大ピクセル数
 ↓
var maxSize = 1920; // 最大ピクセル数


[サンプルをダウンロード]