Illustrator CS4/CS5編 100ページ分スレッドテキストを作成する

Illustratorは扱えるけどInDesignは扱いがよくわからないという人もいるでしょう。でも、ページものの仕事が来てしまった場合には、やはり頑張ってInDesignで・・・という気力がでないこともあります。そんな場合は頑張ってIllustrator CS4でページもののPDFを作るという方法もあります。CS4では複数のアートボードが最大100まで作成でき、PDFとして保存すればマルチページになるわけですから、これをどうにか利用したいところです。
ということで、以下のスクリプトは100ページ分のスレッドテキスト(流し込みするテキストフレーム)を作成するものです。


(function(){
var abNum = 100; // 100ページ
var pageW = 595.28; // A4サイズ横幅
var pageH = 841.89; // A4サイズ縦幅
var marginW = 20; // 横のマージン
var marginH = 30; // 縦のマージン
var docObj = app.documents.add(
DocumentColorSpace.RGB,
pageW, // A4サイズ
pageH,
abNum,
DocumentArtboardLayout.GridByRow, // 左から右、上から下
0, // アートボード間の余白
10 // アートボードサイズの平方根。Math.SQRT(abNum)
);
var X = 0;
var Y = pageH * 10;
var prevtxtObj = null;
for(var Y=5; Y>0; Y-=0.5){
for(var X=0; X<5; X+=0.5){
var rx = X*pageW+marginW;
var ry = Y*pageH-marginH;
var rw = pageW-marginW*2;
var rh = pageH-marginH*2;
var rect = activeDocument.pathItems.rectangle(ry, rx, rw, rh);
var txtObj = activeDocument.textFrames.areaText(rect);
txtObj.translate(X*pageW, Y*pageH);
if (prevtxtObj) txtObj.previousFrame = prevtxtObj;
prevtxtObj = txtObj;
}
}
})();

場合によっては2段組にしたい、3段組にしたいこともあります。そのような場合は以下のスクリプトを使います。

(function(){
var abNum = 100; // 100ページ
var pageW = 595.28; // A4サイズ横幅
var pageH = 841.89; // A4サイズ縦幅
var marginW = 20; // 横のマージン
var marginH = 30; // 縦のマージン
var columnCount = 3; // 段組数
var columnGutter = 40; // 段と段の間隔
var docObj = app.documents.add(
DocumentColorSpace.RGB,
pageW, // A4サイズ
pageH,
abNum,
DocumentArtboardLayout.GridByRow, // 左から右、上から下
0, // アートボード間の余白
10 // アートボードサイズの平方根。Math.SQRT(abNum)
);
var X = 0;
var Y = pageH * 10;
var prevtxtObj = null;
for(var Y=5; Y>0; Y-=0.5){
for(var X=0; X<5; X+=0.5){
var rx = X*pageW+marginW;
var ry = Y*pageH-marginH;
var rw = pageW-marginW*2;
var rh = pageH-marginH*2;
var rect = activeDocument.pathItems.rectangle(ry, rx, rw, rh);
var txtObj = activeDocument.textFrames.areaText(rect);
txtObj.translate(X*pageW, Y*pageH);
txtObj.columnCount = columnCount;
txtObj.columnGutter = columnGutter;
if (prevtxtObj) txtObj.previousFrame = prevtxtObj;
prevtxtObj = txtObj;
}
}
})();

段組数と間隔は以下の2行の値を調整してください。

var columnCount = 3; // 段組数
var columnGutter = 40; // 段と段の間隔

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