ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

InDesignでJavaScript その10

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);

}

}

}