Illustrator CS4/CS5編 複数のアートボードに画像を連続配置(2)

今回のスクリプトは前回と似たようなものです。前回はファイルを手作業で1つずつ指定し配置していました。今回のスクリプトはフォルダを指定すると、そのフォルダ内にあるJPEG画像を最大100枚までアートボードに配置します。
配置された後にPDFで保存すれば簡易的な画像カタログとしても利用することができます。


(function(){
var abNum = 100; // 100ページ
var pageW = 595.28; // A4サイズ横幅
var pageH = 841.89; // A4サイズ縦幅
var docObj = app.documents.add(
DocumentColorSpace.RGB,
pageW, // A4サイズ
pageH,
abNum,
DocumentArtboardLayout.GridByRow, // 左から右、上から下
0, // アートボード間の余白
10 // アートボードサイズの平方根。Math.SQRT(abNum)
);
var folderObj = Folder.selectDialog("配置するJPEG画像があるフォルダを選択してください");
var fileList = folderObj.getFiles("*.jpg");
var num = fileList.length;
if (num > 100) num = 100; // 100枚以上は配置しない
var X = 0;
var Y = pageH * 10;
for(var i=0; i<num; i++){
setImage(fileList[i], 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;
myImage.embed();
}
})();
前回同様、上記のスクリプトは画像の幅を調整せず配置してしまいます。画像をA4サイズにおさめる場合には「// 指定した位置に画像を配置」からのスクリプトを以下のものに変更してください。
// 指定した位置に画像を配置
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;
}
myImage.embed();
}
また、埋め込み画像ではなくリンクタイプの画像にしたい場合には「myImage.embed();」の行を削除してください。

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