見出し画像

面付け用スクリプトに挑戦(5)

旧PCで面付け作業をしようと思ったらAdobeCCのアカウントの問題もあって、慌てて新PCで動くスクリプトを作らなきゃ!とスクリプト作成に再着手。相変わらずのその場しのぎだ。

やってみたら思ったよりも簡単で、あとはトンボとドキュメント情報を付ければ使えるところまで進んだ。しかも前任者のスクリプトよりも高速!

印刷に使用する用紙サイズのドキュメントにIndesignにおまけで付いてきたスクリプト ”PlaceMultipagePDF.jsx” を使って全ページを配置。位置はどこでもOK。そこまでやってから下のスクリプトを走らせると、用紙の中心にノド合わせで2丁付いた形になった、と思う。

実際に使用する前にいろいろ試しておかないと危険なので、慎重に運用したい。

	var myDoc = app.activeDocument;
	var myWidth = Math.abs(app.activeWindow.activePage.bounds[3]-app.activeWindow.activePage.bounds[1]);//ページの幅を取得
	var myHeight = Math.abs(app.activeWindow.activePage.bounds[2]-app.activeWindow.activePage.bounds[0]);//ページの高さを取得
	
	for(i=0;i<myDoc.pages.length;i++){//ページの数だけ繰り返す
		app.activeWindow.activePage = app.activeDocument.pages[i];//activePageを指定する
		var myItem = app.activeWindow.activePage.pageItems[0];//activePageに配置されたオブジェクトを指定
		var myItemX = Math.abs(myItem.geometricBounds[3]-myItem.geometricBounds[1]);//そのオブジェクトの幅を取得
		var myItemY = Math.abs(myItem.geometricBounds[2]-myItem.geometricBounds[0]);//そのオブジェクトの高さを取得
		var Y0 = (myHeight - myItemY) / 2;//用紙内に貼ったページデータの上端になる
		var X0 =myWidth / 2;//これは用紙の中心だね
		var Y1 = Y0 + myItemY;
		var X1 = X0 + myItemX;
		if( (i + 1) % 2 == 1){//奇数ページの場合の座標を計算
			myItem.geometricBounds = [Y0 , X0 , Y1 , X1];
			myItem.fit(FitOptions.CENTER_CONTENT);
			myItem.geometricBounds = [Y0-3 , X0 , Y1+3 , X1+3];
			var myItem2 = myItem.duplicate();//貼ったページデータを複製
			myItem2.geometricBounds = [Y0 , X0-myItemX , Y1 , X1-myItemX];//裁ち落とし分を広げる1行
			myItem2.fit(FitOptions.CENTER_CONTENT);
			myItem2.graphics[0].rotationAngle = 180;
			myItem2.geometricBounds = [Y0-3 , X0-myItemX-3 , Y1+3 , X1-myItemX];
			};
		else {//偶数ページの場合の座標を計算
			myItem.geometricBounds = [Y0 , X0-myItemX , Y1 , X0];
			myItem.fit(FitOptions.CENTER_CONTENT);
			myItem.geometricBounds = [Y0-3 , X0-myItemX-3 , Y1+3 , X0];
			var myItem2 = myItem.duplicate();
			myItem2.geometricBounds = [Y0 , X0 , Y1 , X1];
			myItem2.graphics[0].rotationAngle = 180;
			myItem2.fit(FitOptions.CENTER_CONTENT);
			myItem2.geometricBounds = [Y0-3 , X0 , Y1+3 , X1+3];
			}
		}

オブジェクトの geometricBounds を指定すればいいのかと思ったら中の画像が動かなかったので fit を使って動かした。

また rotationAngle で最初に

myItem2.images[0].rotaionAngle = 180;

としたらエラーになったので images を graphics に変えてみたら動いた。この辺りは今後いろいろ試さないとだめかも。

あとはマスターページにトンボを描画すれば(これは後回し)、とりあえず日常の作業はなんとかなるか。いろいろテストしないと

今回も参考にしたのは
 古籏一浩 著
 InDesign自動化サンプルプログラム逆引きリファレンス上・下
 インプレスR&D. Kindle Edition.
ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?