【InDesign】EDI COLOR機能を再現(1)ブランケット判(A2L)をA3分割プリント
弊社は新聞組版がメインであり、国産組版ソフトEDI COLOR(販売終了)で長年組まれたお客様が多数です。
なので結構あります、「EDICOLORでできたのに、この機能ないの?エェェェェ」という声。
新聞は主に2サイズあり、
- ブランケット判(546x406)A2L弱
- タブロイド判(406x273)A3規格弱
EDI COLORには、トンボを付けつつA3横・2分割印刷機能が備わっていましたが、InDesignやIllustratorのタイル印刷機能は、まあ、、、あれだ()
因みにこのEDI COLORで付くトンボは、当然ですがオブジェクト扱いとなります
ネイティブ機能だけだと、縮小が97〜94%ほど必要になります。規格サイズが日本と違うんだから、機能自体がクソというわけではないんですが。
Acrobatの「ポスター」処理なら縮小なし分割出力できますが、いちいちPDFに書き出さず、その場でサクサク出したい時もあるんです。下だけ欲しいなんて時もあります。
ということで、作ってみましたInDesign用のJavaScript。
単にページ原点を数値指定し、A3横・タイル印刷=手動にしてからプリントウインドウを開くだけの、シンプルな内容です。
※InDesign JavaScriptの運用方法は、色々ggってみて下さい ← 今さらだし
----------------以下記述----------------
//DESCRIPTION:大判(A2L)を縮小なし・A3ヨコにタイルプリント(らーで閣下)
// 大判 406x546
var myDoc = app.activeDocument;
var myVewPrefs = myDoc.viewPreferences;
var myPrtSet = myDoc.printPreferences;
// 定規(単位)をmmに
myVewPrefs.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS; // 定規の単位:水平方向
myVewPrefs.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS; // 定規の単位:垂直方向
myPrtSet.printPageOrientation = 2003395685; //LANDSCAPE
/* 縦置き 1751738216; //PORTRAIT
横置き 2003395685; //LANDSCAPE
横置き逆 1869771372; //REVERSE_LANDSCAPE
縦置き逆 1869771376; //REVERSE_PORTRAIT
*/
myPrtSet.tile = true; // タイルON
myPrtSet.tilingType = 1835955308; // 手動(16進数)
/* AUTO 1635019116; //自動
AUTO_JUSTIFIED 1634366324; //自動揃え
MANUAL 1835955308; //手動
*/
myPrtSet.scaleProportional = true; // スケーリング(縦横)比率を制限 ON
myPrtSet.scaleHeight = 100; //%
myPrtSet.scaleWidth = 100; //%
// 上半分
//myDoc.zeroPoint = [1, -10]; //x, y
// 下半分
//myDoc.zeroPoint = [1, 271]; //x, y
alert ("【CAUTION !!】 プリント後は、必ず 「原点を0に戻す」scriptを実行して下さい!");
myDoc.print ();
----------------ここまで----------------
上半分・下半分
myDoc.zeroPoint =〜
の先頭エスケープ「//」を外すと、いずれかの専用になります。
上半分用と下半分用、そしてプリント後に必ず、下記「設定を元に戻す」の3点セットで利用して下さい。
元に戻す実行を忘れないよう、プリント時にまずアラートを出す仕様になっています。
プリント環境・ネットワーク環境が変わると用紙指定がクリアされてしまうため、最初だけプリントウインドウにて、
プリンター(の種類)→ 選択
設定→ 用紙サイズ→ A3 を指定して下さい。
あとは通常通りにプリントするだけです。
----------------原点・分割設定を元に戻す記述----------------
//DESCRIPTION:ドキュメントの原点を「0」に戻す(らーで閣下)
alert ("タイル(分割印刷)設定もリセットします");
var myDoc = app.activeDocument;
var myVewPrefs = myDoc.viewPreferences;
// 定規(単位)をmmに
myVewPrefs.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
// 定規の単位:水平方向
myVewPrefs.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
// 定規の単位:垂直方向
myDoc.zeroPoint = [0, 0]; //x, y
myDoc.printPreferences.tile = false; //タイルOFF
myDoc.printPreferences.pagePosition = 1668183106; // 天地左右センター
/* 設定→ ページの位置
CENTER_HORIZONTALLY 1668183112(天地センター)
CENTER_VERTICALLY 1668183126(左右センター)
CENTERED 1668183106(天地左右センター)
UPPER_LEFT 1668183118(左上)
*/
----------------ここまで----------------
プリンタの指定は、printerList PropertiesがArray of strings. read onlyとなっている以上、JavaScriptだけではやはり名称の取得で限界のようです。
(by お〜まち様)
----------------因みに、プリンタ名の取得----------------
//DESCRIPTION:activeDocumentの「現在のプリンタ」を呼び出す
// 名称の五十音順になってる
var Pnt_List = app.activeDocument.printPreferences.printerList;
// appにはないらしい
var myPntListArray = [];
if (Pnt_List.length < 2) // Adobe PDFがいる前提で
{
alert ("プリンターが繋がれていません");
}
else
{
myPntListArray.push(Pnt_List);
}
alert (myPntListArray);
----------------ここまで----------------
※必ず何かドキュメントを開いている必要があります
これ意外にも、POD室が電源落とされてるかの確認に使えるかもw
上半分と下半分もscriptを1つに纏める・またプリント部数やページ指定その他もVBS COM経由で…など考えましたが、UIの作り込み・出力後元の設定に戻すことなどを思うと、頭痛がしてくる()ので ※こういう人はいつまでも上達しません
ここまで多機能で親切設計なデフォルトウインドウを、使わない手はありませんし。 言い聞かせる
あと、私がスクリプトをこねる時は、「様々なレベル(超級素人)・環境の同僚及びお客様相手に、いかにして手間なし・スムーズに使って戴けるか」を常に気遣う必要があるのも大きい。
利便性を広げようとすればするほど、私ら程度の技量では残念ながら汎用性は犠牲になる傾向にあります。
このあと、
(2)現在の選択数を表示 (3)段間罫線をひく (4)文字枠を段幅で分割 (5)オブジェクト作成後、自動で選択ツールに持ち替える (6)テキストを選択順にまとめて書き出し (7)連続してストーリーを連結 (8)フレームグリッドサイズを字数で定義
などを予定。あ、全てjsx(スクリプト)です。
テキスト取り込みパレット、総ルビふり、選択中のアキを計算して整列
辺りは、すでに発表されている方々の紹介と応用になる筈。
これ以外にEDI COLOR特有の機能ってありましたっけ
※二値のグラデーション、フチ文字と文字単位の囲みはナシね
※飾り罫機能、面種機能もナシ(ほぼ開発会社レベルになるので)
※選択範囲矩形書き出し機能… 手間かければ出来るだろうけど
※表計算機能… そんな恐ろしい機能を、そもそも印刷組版に期待しないでぇぇ
※均等揃えタブ… おそらく無理
ところでエート、