画像カタログを作成する(InDesign CS3編)

もっとも需要が多そうなのがInDesignによる画像カタログかもしれません。以下のスクリプトを実行すると選択したフォルダ内(第一階層のみ)の画像を読み出して自動的に配置します。この時に画像の下にファイル名も同時に表示するようになっています。
MacOS Xの場合はInDesign CS3で動かしてください。CS2でも動作しますが、日本語ファイル名の一部が文字化けします。この文字化けを回避するには以前にやった濁点等の変換処理を組み込めば問題なく日本語もInDesign CS2で表示させることができます。
// あらかじめ、たくさんのページをつくっておく事!!
CR = String.fromCharCode(13);
startX = 0; // 開始位置(横)
startY = 0; // 開始位置(縦)
w = 30; // 横幅
h = 20; // 縦幅
maxCountX = 5; // 横の最大枚数
maxCountY = 8; // 縦の最大枚数
boxHeight = 15; // 行間
x = startX;
y = startY;
cntX = 0;
cntY = 0;
pageNum = 0; // ページ番号
docObj = app.activeDocument;
foldername = Folder.selectDialog("フォルダを指定してください");
if (foldername)
{
ext = ["*.jpg","*.png","*.psd"];
for (var j=0; j<ext.length; j++)
{
fileList = foldername.getFiles(ext[j]);
layoutImage(fileList);
}
}
function layoutImage(fileList)
{
for (i=0; i<fileList.length; i++)
{
var tfObj = app.activeDocument.pages[pageNum].textFrames.add();
tfObj.visibleBounds = [y,x,y+h,x+w];
tfObj.contentType = ContentType.graphicType;
imgPath = new File(fileList[i].fsName);
tfObj.place(imgPath);
tfObj.fit(FitOptions.contentToFrame);
// ファイル名の追加
var tfObj = app.activeDocument.pages[pageNum].textFrames.add();
tfObj.visibleBounds = [y+h,x,y+h+5,x+w];
tfObj.contentType = ContentType.textType;
tfObj.contents = File.decode(fileList[i].name);
x = x + w;
cntX++;
if (cntX >= maxCountX)
{
cntX = 0;
x = startX;
y = y + h + boxHeight;
cntY++;
if (cntY >= maxCountY)
{
cntY = 0;
y = startY;
pageNum++;
}
}
}
}
画像が大量にある場合にはページ数をたくさん増やしておいてください。このスクリプトでは自動的にページを増やす機能がないためです。
上記のサンプルでは画像の拡張子がjpg, png, psdのみになっていますが、これは以下の部分で指定することができます。

ext = ["*.jpg","*.png","*.psd"];

例えばgif形式も生成対象として追加したい場合は以下のように指定します。

ext = ["*.jpg","*.png","*.psd", "*.gif"];

逆にJPEGファイルのみであれば以下のように指定します。

ext = ["*.jpg"];


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