クリエイター手抜きプロジェクト[254]Illustrator CS4/CS5編 複数のアートボードに画像を連続配置(1)
── 古籏一浩 ──

投稿:  著者:


今回のスクリプトは、複数のアートボードに画像を連続配置するものです。このスクリプトはIllustrator CS4以降でのみ動作します。CS4からは複数のアートボードが用意されており、アートボードごとに位置を自由に変更することができます。また、複数のアートボードを作成し、PDFとして保存すると複数のPDFを作成することができます。

以下のスクリプトは、100枚のA4サイズのアートボードを作成した後、ファイル選択ダイアログを表示します。選択された画像を最大100枚までアートボード単位で配置していきます。つまり、1画像=1アートボードに配置していくわけです。最後にPDFで保存すれば、複数ページの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 count = 0;
var X = 0;
var Y = pageH * 10;
while(true){
var fileObj = File.openDialog("配置する画像を選択してください("+(count+1)+"枚目)", "*", false);
if (!fileObj) return; // キャンセルされたら、そこで中止
setImage(fileObj, X, Y);
count = count + 1;
if (count > 99) return; // 100枚を超えたら終わり
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サイズに収まると分かっている場合にはよいのですが、サイズが異なる画像の場合は不便です。
選択した画像を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();」の行を削除してください。


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

最初の頃に関わった、塩尻インターネット(行政が始めた接続サービス)も来年の3月で終わりとのこと。だいたい15年経過したことになるけど、急速にインターネットが普及し、大量のサービスが登場しました。でも、人間の行動ってあんまり変わってない気も。

・プロならば知っておくべきWebコーディング&デザインの定石100
< http://www.amazon.co.jp/dp/4844361538
>

・Google API Expertが解説するHTML5ガイドブック【発売中】
< http://www.amazon.co.jp/dp/4844329278
>

・逆引きGoogle Maps APIリファレンス ver 3
< http://www.openspc2.org/reibun/Google/Maps/API/ver3/
>

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

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集 発売中
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>

毎度おなじみASCII.jpの連載もよろしく
・JavaScriptで並列処理ができる「Web Workers」
< http://ascii.jp/elem/000/000/560/560326/
>