InDesignでJavaScript その10。
ようやく10まで漕ぎ着けた。
今回作ったのは複数ページで構成されるPDFを読み込んで複数ページでコマ数に応じてページを増やしつつ面付するJavaScript。
●PDFの総ページ数を取得する命令がわかんないので、決め打ちか使用者に調べてもらう仕様にした。
●冒頭に書いてある変数群で、コマ数やページ数、貼り込むフレームの基準サイズ、フレームを増やすための増減値などを指定することで、ある程度の汎用性を持たせた(あくまで修正を簡単にする程度…かな)。
●ちょっといじればフレームを再利用して貼り込み直しのみできるようにしてみた。
名刺の面付けとか面倒な人は使ってみてください。
要望等あれば時間のあるとき及び反映できる範囲で応えますです。
ただしクレームは聞きませんよ~!
自己責任でご使用ください。
/*
★簡易面付けスクリプトPDFコマ用.jsx★
☆ver.1.0☆
Copyright [偽善者こうちゃん]
[2007.01.12] {
ver.1.0作成
}
複数ページで構成されるPDFを読み込んで
コマ数に応じてページを増やし
面付するJavaScript。
勉強用に作ったのでサンプルとして使わないほうが…。
なお、このJavaScriptを使用して損害をこうむっても
私は知りませんので、あしからず。
偽善者こうちゃん
http://macneko.blog77.fc2.com/
*/
//ドキュメントを開いているかチェック
if (app.documents.length != 0) {
//開いていたら
Mentuke_koma();
} else {
//開いていなかったら
alert("ドキュメントを開いてから実行してください");
}
function Mentuke_koma() {
//作業するドキュメントなどを変数に代入
var docObj = app.activeDocument;
var pageObj = app.activeDocument.pages;
//コマに関する情報を変数に代入しておく
var y1 = 31 ; //基準の座標位置
var x1 = 18 ; //基準の座標位置
var y2 = 87 ; //基準の座標位置
var x2 = 104 ; //基準の座標位置
var w1 = 88 ; //X軸の増減値
var h1 = 58 ; //Y軸の増減値
var allNum = 62 ; //PDFの総ページ数が決め打ちの場合
//var allNum = parseInt(prompt("総ページ数は?",1)); // PDFの総ページ数を使用者に聞く場合
var komakazu = 8 ; //1ページあたりのコマの数
var allPage = Math.ceil(allNum / komakazu) ; //総ページ数(小数点以下切り上げ)
//貼り込むPDFを選択させる
fileName = File.openDialog("貼り込むPDFを選択してください");
if (fileName) {
//ラベル用にPDFのページ数をカウント開始
lineCount = 1;
for (i = 0 ; i < (allPage - 1) ; i++) {
//ページ数を増やす
docObj.pages.add();
}
//ページ数分繰り返す
for (i = 0 ; i < allPage ; i++) {
//左側の列
//ボックス1個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [y1,x1,y2,x2];
txtObj.contentType = ContentType.graphicType;
//ラベルに入れるためには文字化しないとダメらしい
txtObj.label = lineCount.toString() ;
//次のボックスのために+1
lineCount = lineCount + 1;
//ボックス2個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [(y1 + h1),x1,(y2 + h1),x2];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
//ボックス3個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [(y1 + (h1 * 2)),x1,(y2 + (h1 * 2)),x2];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
//ボックス4個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [(y1 + (h1 * 3)),x1,(y2 + (h1 * 3)),x2];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
//右側の列
//ボックス5個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [y1,(x1 + w1),y2,(x2 + w1)];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
//ボックス6個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [(y1 + h1),(x1 + w1),(y2 + h1),(x2 + w1)];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
//ボックス7個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [(y1 + (h1 *2)),(x1 + w1),(y2 + (h1 *2)),(x2 + w1)];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
//ボックス8個目
txtObj = pageObj[i].textFrames.add();
txtObj.visibleBounds = [(y1 + (h1 *3)),(x1 + w1),(y2 + (h1 *3)),(x2 + w1)];
txtObj.contentType = ContentType.graphicType;
txtObj.label = lineCount.toString() ;
lineCount = lineCount + 1;
}
//PDFのページ数分繰り返す
for (i = 1 ; i <= allNum ; i++) {
// ページ数
app.pdfPlacePreferences.pageNumber = i;
//placeのファイルを読み込む
var myObj = docObj.pageItems.item(i.toString());
myObj.select();
myObj.place(fileName);
//フレームにFit
myObj.fit(FitOptions.contentToFrame);
}
}
}