InDesign:PDF配置オプションを手籠にする

いまどきってInDesignにPDFとか貼れちゃうじゃないですか。
 でも貼り方ってあるじゃないですか。アートとかブリードとか。クロップというやつ。
配置する時に「配置オプション」にチェックを入れればそれを選択できるけど、一度チェックを入れてしまうと
 次回の配置時にまた配置オプションにチェック入っててウザいじゃないですか。
一度設定すればあとイイっつーの、とか思うじゃんすか。
 まぁ、配置ファイル選択ダイアログのOKボタンをShiftキー併用してやれば
  その時だけ配置オプションが開けるんですけどね。

でも、でも、他者が配置したPDFとかってどのクロップで配置されたのか不安じゃないですか。
 ひどいと、おとといの自分がどのクロップで配置したか…いや、自分は大概いつもひどいんですけども。
配置されたPDFのクロップはInDesign上のどこで確認できるのか。
 ちょっと探して見つからなかったのですぐスクリプトに逃げました。
  プロパティがちょっと探して見つからなかったのですぐ Twitterに投げました。
 わからないまくりだなあ。
  そしたら流星さんがご親切にすぐさま教えて下さいました
   …からには、こっちもすぐ書きま……しょうと思いました。気持ちだけは。

すっかり失念してましたが、PDF.pdfAttributes.pdfCrop って
 ウチが何年か前、InDesignで一番最初に探したプロパティでした。
  三つ子の魂百まで、ぜんぶ足したら三百ぐらい(うそ)、
 一度忘れるものは二度も三度も忘れちまうこの俺さ。かっこいいな。 口調だけは。

クロップで思い出したけど、ウチのムス子(5歳弱)は、鳩の鳴き声を「ぷくぷく」と言います。絶妙に微妙。

というわけで、クロップを掌握するスクリプト。
 便宜上「PDFをば」という名前にしてありますが、
  ai形式ファイルも同様に扱えます。ウチはむしろ後者なのです。



PDF_CropViewer.jsx
※大バグ発覚により修正しました(2011.09.06 09:45AM)ver_c が最新です。

InDesignCS3 MacOSX10.4.11で動作確認。Windowsでも動くはずです。
 CS4でもたぶん大丈夫です。
 CS5についてはEnamura-jane(プロパティが10ケタ数字のアレのやつ)の扱いが違ってたせいで
  こないだ某所で大恥をかいたので(笑)、わかりません。やってみて動かなかったら動きません。
 情報求む。



スクリプトをダブルクリッキングするとパレッティングが現れりんぐ します。
 ※起動時、後述の「確認」ボタンクリックと同等の処理がなされます

確認 ボタン
現在の設定値を、2つのドロップダウンリストの項目選択に反映します。
上:配置設定

アプリケーションのPDF配置初期設定を表示します。
Finderからドラッグ&ドロップ&ナポリタンするなど、
配置オプションを出さずにPDFを配置するときに適用されるクロップです、ということです。

下:選択範囲

選択範囲内のPDFのクロップを表示します。
選択範囲内にPDFが1つの時のみ反映します。
また、PDF以外のオブジェクトが選択されたクソまみれ状態でも的確にPDFをピッカップします。
インラインオブジェクトの場合は単独で選択する必要があります。

再配置 ボタン
逆に、ドロップダウンリストで任意に選択したクロップをアプリケーションと選択PDFに適用します。
こちらは選択PDFいくつでもOKです。が、インラインオブジェクトは個別選択して下さい。
 …つっても単一スプレッド上でいくつもPDFを選択する局面なんかあまりないでしょうけど。

「削除してから再配置」チェックボックス
いちおうデフォルトではオンにしてあります。
一旦、親フレームの中をカラッポにしてから配置するという手順を踏む事によって、
「フレーム調整オプション…」で設定してある通りに再配置することができます。
チェックボックスがオフの場合、いわゆるリンクの置換が行われます。
元の状態の左上座標、スケール、回転角などが保持された状態で再配置されます。
クロップを変えるという事はトリミングも変わるわけで、あまり意味ないかも知れませんが
座標はともかくスケール、角度、シアー、不透明度、オブジェクトスタイルなどはそっと守ってあげたい、
そんな優しい気持ちの時もあるのではないでしょうか。

操作方法は以上です。

以下、構文について少し説明しておきます。
 結局クラスの作成などはせず、変態プレイをしてしまったので…

// 画像オブジェクトのフルパス取得
function getPath(obj){
return ($.os.match(/Macintosh/))?
app.doScript (“item 1 of arguments as alias”, ScriptLanguage.APPLESCRIPT_LANGUAGE , [obj.itemLink.filePath]).toString() :
encodeURI(File(obj.itemLink.filePath).fullName);
}
fullPathObj = getPath(imageObj);

OSがMacならAppleScriptでリンクのパスを拾う(POSIXパスだかなんだかになる)、
 それ以外ならフツーにやる。
例のPOT2と、いま準備中のIFA_idに使っている関数をもいできました。
 濁音とか半濁音とか全角記号とかが、へっちゃらくんになります。

// 10けたのEnumeration達をインデックス番号で呼ぶ
function letFunc(ind){
app.pdfPlacePreferences.pdfCrop=eval(“PDFCrop.”+ PDFCrop.reflect.properties[ind].name);
}
letFunc(1); //PDFCrop.PDFCROP_ART

ドロップダウンリストのアイテムは前もってPDFCropの並び通りに作ってあり、
 選択したリストアイテムのindexでそのままPDFCrop内を参照してみています。
(最近ESTKのデータブラウザで”未定義の関数”とかモロモロ表示させるようにしたので、ついうっかり)

// 一致する配列の子のindexをループを使わずに参照したかったので代替案
function readFunc(obj){

var num=obj.toString().slice(-2)-0;

return cropIndexAry[num]; ※11.09.16「文字列に変換せず数値の下2ケタを得る」がおぼつかずヘタこいてたのを修正
return cropIndexAry[obj%100];
}
var cropIndexAry=[,,,,,,,,,,,,,1,4,0,,,,,,,,,,5,,,2,,,,3];
DropDownList.selection=(readFunc(app.pdfPlacePreferences.pdfCrop));

6種のPDFCropのEnumeration(10ケタ)の下2ケタで配列をほじると、
 そのPDFCropのindexがもらえる仕組み。
Switch文を書いていて、2つ目ぐらいでイラッとして、
ほんとはクラス定義の手習いに、とも思ったけど、ついうっかり。
 「アートなら」「裁ち落としなら」などの分岐がない限りは、「こーゆーもんだ」と割り切って
 習慣づけてしまえばこれもアリかと。嫌いな人にはすごい嫌われそうですが。

10ケタのEnumerationをどうにかこうにかするにあたり、
 以下の3記事を、参考に、と書くと絶対に「どこがよ」と怒られてしまうので、
  ええとインスパイアのダシにさせていただきました。。
カネムーメモ: InDesignの10桁数値から意味のあるプロパティ名を得たい
[InDesign]10桁数値→人間語のハッシュマップ | milligramme 3cc
カネムーメモ: ExtendScript ToolKitのヘルプから、10桁数値→人間語のハッシュマップを生成する

とりゃえずテスト。お手軽に。
100×148の新規ドチュメント作成、メニュー→オブジェクト→ダメトンボ、アートボードサイズでC50の長方形、背面に6㎜ずつ大きいM50の長方形。
その後アートボードをA4サイズにして、同様に仕上がりサイズのY50長方形、6単位ずつ大きいK50長方形、という作り。

これを『ザトペック(1).ai』という名前で保存。濁音、半濁音、全角カッコ、全角スージが含まれています。
その同じ階層に、てけとうに50%ずつ色を混ぜた物を、

こっちは『ザトペック(1).ai』として保存。カッコとスージが半角になった名前。再配置時、リンクのフルパス取得にコケるとこっちが来ます。

まず、ドキュメントはマッサラの新規状態でスクリプト起動してみます。
 上のリストにはアプリケーションの初期設定が出ました。
 下は選択範囲ナシということでリスト反映を拒絶。

ここに、作っておいた『ザトペック(1).ai』をFinderからドロップします。

 これを選択して確認ボタンを押してみる。

下リストに、上リストと同じのが出ました。初期設定に従って配置されたということになります。

同じ『ザトペック(1).ai』を、今度は上のリストを任意の物に変更して再配置ボタンを押してからからドロップ。
これも従っているようで。

この状態から、上リストをまた別な物に変えてみてから確認ボタンを押してみる。
上リストは初期設定に戻され、下リストは選択されたPDFのクロップに選択が変化したのがわかります。

確認ボタンで遊ぶのはここまで。

次は隣の再配置ボタンを試してみます。
 前準備として、PDFの親フレームを「フレーム調整オプション…」から次のようにしておきます。

その上で、PDFをしっちゃかめっちゃかにしておきます。
 縮小して、回転して、シアーかけて、天地反転して、不透明度さげて、乗算かけてみました。
いじりすぎだろう。。

では、下リストから任意のクロップを選んで再配置ボタン削除してからチェックはオン。
 どん。
親フレームの調整オプションに素直な状態で配置されました。
 同階層に用意した『ザトペック(1).ai』もちゃんと無視してます
これこれ、これやがな。

『配置』と『削除』の取り消し。困&Zを2回。
で、今度は削除してからチェックをオフにして、どん。

座標はおかしい事になっているけど、その他はマルマンマ維持。
 そういうわけです。

再配置ボタンは複数の選択PDFに一括で使えます。
 インラインオブジェクトの場合は、
親ストーリーを含むオブジェクトではなく中のブツを選択する必要があります。

 以上。
うーん、このすがすがしい達成感と自己満足感。。
 とりゃえず、「いま何クロップだい」「これ何クロップだい」てな時には便利かと思います。どうぞ。

CLさんよりご指摘があり、ごもっともなので噛み砕いて追記(パツキンでミニスカの人)
 ウチ個人の業務上では自前で保存したaiネイティブデータを配置する事が多く、
今回のブツもそれに当て込んで作った気でいたんですが、
 先方支給の、何を使ってどうやって書き出したかキッパリ不明なPDFをInDesign上にママ配置する際は、
  あなたの健康を損なう恐れがあります。妊婦は特にダメ。
 くれぐれもRIP後の出力紙などでの確認を怠らない事をお勧めします。平気でどこかヌケたりしますから。

コメントを残す

メールアドレスが公開されることはありません。

*