見出し画像

IndesignにIndesignドキュメントを配置する

ページ物が得意先からIllustratorで入稿される

会社案内やパンフレットなどの入稿データが見開き、複数ファイルという状態で入稿されることが多い。
総ページ数がそれほど多いわけではないので、見開きレイアウトのIndesignドキュメントに配置して、ページごとのデータにして面付けをするのだが、Indesignから単ページPDFに書き出して、さらに面付けをすると、入稿データに変更が入るとPDF書き出しからやりなおしとなる。
これが面倒だったので、見開きレイアウトのIndesignドキュメントを全ページ、別ドキュメントに配置したいと考えていた。
けど、本日ようやくどこをいじれば良いのかをみつけた。

app.activeDocument.pages[0].pageItems[0].graphics[0]
app.activeDocument.pages[0].pageItems[0].importedPages[0]

などのプロパティに pageNumber = 1 というのがあって、さんざんこの辺をこねくり回した。
本来はリードオンリーらしいがplaceメソッドを使う際に一緒に指定できないものか、と思って、importedPageのplaceメソッドの書式を調べると
place(fileName, [showingOptions], [withProperties])
とあったので、placeを実行する前にプロパティ用にオブジェクトを作って

var myProperties = {pageNumber = 5} ;
myFrame.place(myFile,false,myProperties);

とやってみるとエラーなく走ったのだが myFrame 内に配置されたのはmyFileの5ページ目ではなく1ページ目でがっかり。

オマケのスクリプトを見ていたら

気がついたのはIndesignにオマケでついてくるPDF全ページ配置スクリプトを改変していた時。
app.pdfPlacePreferences.pageNumberにPDFのページiをforループ構文で入れていることを発見。
もしかして、と思ってESTKのデータブラウザでappを調べてみるとimportedAttributesというのがあって、その中にpageNumberがあった。
そして以前手作業で別ドキュメントのあるページを配置した直後に実行した時だけ、スクリプトで指定したフレームに1ページ目ではないページが配置されたことがあったのを思い出した(この事実があったからあきらめきれなかったのだが)。
とりあえずテストとしてA4サイズのドキュメントの1ページ目にフレームを20個作り、そのフレームに別ドキュメント(全20ページ)を配置するスクリプトを作ってみた。

/*
	他のIndesignドキュメント全ページを配置する
	*/

var myDocTxt = "C:/Users/*****/indd全ページ配置test.indd" ;
//このドキュメントに配置する

var myDocObj = new File (myDocTxt) ;
app.open(myDocObj);

var targetDocTxt ="C:/Users/*****/!中綴じテスト.indd" ;
//配置される側のドキュメント。一回開いてページ数を取得

var targetDocObj = new File(targetDocTxt);
app.open(targetDocObj);
var targetDoc = app.activeDocument ;
var n = targetDoc.pages.length ;
targetDoc =targetDoc.close(SaveOptions.NO);

var myDoc = app.activeDocument ;


for( i = 0 ; i < n ; i++){
	app.importedPageAttributes.pageNumber = i+1 ;
	//配置されるドキュメント側のページをここで設定する

	myDoc.pages[0].pageItems[i].place(targetDocObj); 
	//配置できた。Fitとかその後に入れればよし
	}

長年の課題がついに

意外とあっさりとできてしまった。
でぃざInDesignに掲載された「InDesign DOM」にはとてもお世話になりました。


いいなと思ったら応援しよう!