あけまして、おめでとうございます・・・という時期は終わってしまいましたが新年最初なのでおなじみのご挨拶。
今回は以前とりあげた複数のアートボードへの連続画像配置を機能アップしたものです。以前のスクリプトでは枚数は自由に調整できましたが、改良したスクリプトでは横と縦の枚数を指定してJPEG画像を配置することができます。
スクリプトを実行すると横と縦の配置枚数を聞いてきます。その後、JPEG画像があるフォルダを指定すると自動的にアートボードに配置されていきます。
// 縦横を指定して配置。あらかじめドキュメントを用意
(function(){
var abNum = 100; // 100ページ
var pageW = 595.28; // A4サイズ横幅
var pageH = 841.89; // A4サイズ縦幅
var layoutW = prompt("横のアートボードの数を指定してください", 7);
if (!layoutW) return; // キャンセルされたら以後の処理はしない
var layoutH = prompt("縦のアートボードの数を指定してください", 7);
if (!layoutH) return; // キャンセルされたら以後の処理はしない
var folderObj = Folder.selectDialog("配置するJPEG画像があるフォルダを選択してください");
if (!folderObj) return; // キャンセルされたら以後の処理はしない
layoutW = eval(layoutW);
layoutH = eval(layoutH);
var fileList = folderObj.getFiles("*.jpg");
var num = fileList.length;
var total = layoutW * layoutH; // 総合枚数を求めておく
if (num > total) num = total; // トータル枚数枚以上は配置しない
var count = 0;
for(var j=0; j< layoutH; j++){
var X = 0;
var Y = pageH * (j+1);
for(var i=0; i< layoutW; i++){
setImage(fileList[count++], X, Y);
X = X + pageW;
if (X > pageW*9) { // 10*10なので10枚を超えたら下のアートボードへ
X = 0;
Y = Y - pageH;
}
}
}
// 指定した位置に画像を配置
function setImage(fileObj, x, y){
var myImage = app.activeDocument.placedItems.add();
myImage.file = fileObj;
myImage.left = x;
myImage.top = y;
if (myImage.width > pageW){ // ページの横幅よりはみ出している場合
var d = pageW / myImage.width;
myImage.width = myImage.width * d;
myImage.height = myImage.height * d;
}
if (myImage.height > pageH){ // ページの縦幅よりはみ出している場合
var d = pageH / myImage.height;
myImage.width = myImage.width * d;
myImage.height = myImage.height * d;
}
var tx = (pageW - myImage.width) / 2;
var ty = (pageH - myImage.height) / 2;
myImage.translate(tx, -ty);
myImage.embed();
}
})();
JPEG画像でなくPSD画像の場合は以下のように変更してください。
var fileList = folderObj.getFiles("*.jpg");
↓
var fileList = folderObj.getFiles("*.psd");
拡張子を変えれば他の画像形式(GIF, PNGなど)も配置することができます。
[
サンプルをダウンロード]