InDesign:PDF_CropViewerだいじな修正

PDF_CropViewer修正

配置済みPDFが何クロップよ、とか
アプリケーションの配置オプションが何クロップよ、とか
何クロップに変えてえんだけどなあ、とか
いうのに作ったPDF_CropViewer.jsx(前回の説明ページ)でしたが、
いき親分より、とんだご指摘がありまして。
再配置したとき、指定ページがすっ飛んで先頭ページが配置されてしまうので直せ、と。
ごもっとも、ごもっとも。
自分ではaiファイルしかほとんど扱わなかったので、とんだ盲点でした。

で、改めてPDF配置時の読み込みオプションを眺めたら、
その他にも、
・「背景を透明に」チェック
・レイヤー表示のオンオフ
・リンクの更新オプション
など、まったく無頓着だった事に気付かされた次第。
再配置したら、最後に設定した読み込みオプションをそのまま使ってしまうんですね。
そんでレイヤーは全部表示される。
PDFやai形式ファイルに於いて、そういうちょこざいなテクニカルな配置をしたレイアウトを手にした事がなかったもので。オホホホ

というわけで、直しました。



※ただいま鋭意修正中。しばらくお待ちくださいまし。。
PDF_CropViewer.jsx

バージョン_d+
InDesignCS3で動作確認済み。
CS4以降もたぶん対応。



ついでにボタンの名称もわかりやすく変えました。
日本語むずかしいです。

 

8 thoughts on “InDesign:PDF_CropViewerだいじな修正

  1. 度々失礼しますw
    これすごく良いのですが、残念なことにCS5以降ではうまく動かないです。(そしてこれも自分用のは別にあったりしますw)
    バウンディングボックスがCS5以降では境界線ボックス(すべてのレイヤー)と境界線ボックス(表示中のレイヤーのみ)に分かれたのが原因です。
    それでCS5用に101行目と103行目を書き換えてみたのですが、みる方は大丈夫そうですが、かえる方がうまく動きませんでした。
    101行目:var cropIndexAry=[,,,1,,,,,,,,,,2,5,,,,,,,,,,0,6,,,3,,,,4];
    103行目:var crop=[“境界線ボックス(すべてのレイヤー)”,”境界線ボックス(表示中のレイヤーのみ)”, “アート”, “トリミング”, “トンボ”, “裁ち落とし”, “メディア”];
    他にかえる部分はありますか?

  2. すいません、訂正します。
    境界線ボックスの順序が逆でした。
    101行目:var cropIndexAry=[,,,0,,,,,,,,,,2,5,,,,,,,,,,1,6,,,3,,,,4];
    103行目:var crop=[“境界線ボックス(表示中のレイヤーのみ)”,”境界線ボックス(すべてのレイヤー)”, “アート”, “トリミング”, “トンボ”, “裁ち落とし”, “メディア”];

  3. うーw
    午後四時ごろ不具合が発覚してDL先をいったん閉めたんですが間に合わなかったようで orz
    Twitterで流星さんに検証していただいた分と自分でひねくり回してわかった、現状の問題点を、コメント欄内でアレですが挙げつらっておきます。
    CS3とCS4だけです。CS5はお互い手元にありませんでした。。
    ・指定クロップと適用クロップが1つズレる
    バウンディングボックスを指定すればアートになり、アートを指定すればトリミングに、という具合です。CS3だけは正常に動作しました。アホな関数のせいです。CS4がダメなので、おそらくCS5もダメです。
    ・オブジェクトレイヤーオプションの復元性能に問題あり
    元の状態を継承するというか、消す前に全部メモッておいたのを再配置後に戻しているんですが、これが現状だと
    ネイティブaiファイル…○
    Illustrator「別名で保存」で作ったPDF…○
    InDesignで書き出したPDF…×
    Distillerで書き出したAcrobat6互換のレイヤーありPDF…×
     という状況です。
    そのあたりで仕事が来たので検証作業が棚上げになってしまいました。
    環境が揃わないので想像でしか言えませんが、
    101行目の配列[PDFCropのエネメネ何とか(10桁数字)の下2ケタ]で拾う仕組みになっています。エネメネ何とかはCS5からは様子が違うようなのでこれを避けて地道なswitch(obj.pdfAttributes.pdfCrop){}
    とかで分岐しないとダメっぽいです。
    103行目は上述の指定クロップと適用クロップがズレる原因になっています。PDFCrop.reflect を覗いて配列化されているクロップの並びを乱さない事が絶対条件なので、おそらくCS4以降で前の方に1つ追加されて順番が狂ったんだと思います。
    業務、家庭、カネに関わるスクリプトw などが優先するため、しばらく腰を据えて直せないっぽいです orz
    すいませーんすいませーん

  4. あ、不具合追加
    ・再配置するとフレームにフィットされてしまう尺が狂う
    これが…非常に面倒。
    名前のとおりただのクロップビューアとして使うのが賢いのかも。。。

  5. いえいえ、お忙しいところ、申し訳ないです。
    Enum値はおいておくとして、再配置の関数部分が問題のようですね。
    症状は「指定クロップと適用クロップが1つズレる」に合致しています。
    レイヤーオプションの辺りは未確認です。
    > 再配置するとフレームにフィットされてしまう尺が狂う
    クロップが変わって画像そのものの大きさが変わるのも当然ありますが、これは散々議論を続けてきたアノ辺とかも絡んでくるのがさらに厄介ですね。特にCS5以降…。
    そもそも勉強部屋で私が質問した『CS5では削除しても前の画像のトリミングが残る』という問題はコレです。
    CS5の自分のスクリプトで指定クロップで再配置(画像削除→再配置)したらトリミングがおかしかったのですよ。
    何が不便って、配置後に画像のトリミング設定を確認する手だてが一切無いのが問題ですよね。
    そしていつの間にか変わっている配置時の設定…これに何度泣かされたことやら。
    とりあえず自分のもこちらを参考に改良しつつ、PDF_CropViewerの完成を気長に待つとしますw

  6. まだすぐは直らないけど、ここにメモ
    ESTKで
    a=PDFCrop.reflect.properties; $.bp();
    したとき、クロップの個数と並びはCS3、CS4とも同じだがCS3がクロップの後にreflect、CS4はreflectの後にクロップ。これがCS4の1この原因。
    CS5も同様にして調べないと原因ははっきりしないけど、配列内の番手参照をやめればいい話なので別に見なくても、か。
    どなたかがバッチリなやつを公開して、こっちのは葬るのが理想なのですだが “^

  7. 休みの間に検証してました。こちらからもご報告を。
    >PDFCrop.reflect を覗いて配列化されているクロップの並びを乱さない事が絶対条件
    この意味をちゃんと理解していなかったのですが…
    つまりドロップダウンの並び順を PDFCrop.reflect.properties[ind].name の並びと同じにしないといけないのですね。
    CS5以降では当然この並びも数も変わっているからうまく動かない、と。
    それを踏まえて101・103行目と、win.BG.LB.onClickを少し修正したら指定クロップで再配置できるようになりました。
    次にオブジェクトレイヤーオプションですが、まずCS5ではネイティブaiファイルを含め全滅でした。
    その原因の1つは、オブジェクトレイヤーオプションでレイヤーの表示/非表示を切り替えると、InDesignがファイルを再配置する点。
    (CS5で表示を切り替える度にafterPlaceイベントが起きているのを確認しています)
    ここで再配置されることにより pdfAry[i]=parentObj.allGraphics[0] を見失うようです。
    これは156行目あたりのfor文内で pdfAry[i]=parentObj.allGraphics[0] を入れて回避しました。
    これで結構いい感じ、と思ったのですが…
    もう1つの問題は、まさかのサブレイヤー(!)というヤツでした…。
     さすがにこれには撃沈しました… ど、どなたか…

  8. オメガさん引き続き検証ありがとうございます。
    ウチはそろそろ逃げたくなってきてますがw
    UIのドロップダウンで選択した番目でクロップの番目を指定する方法は多岐のバージョンに対応するにあたり、あまりにも具合がわるいので廃止して、結局for()で配列を1こづつ見ていくダサい方式に改めました。これはもうこれでたぶん大丈夫なのでもう忘れましょう。
    配置PDFをいじるとidが刷新されてしまうのはtwitterでもkamisetoさんと流星さんとのやり取りでも見かけました。ウチはその頃残業とか幼稚園のベルマーク委員作業とかしてましたorz
    手元で試せるのはCS3、CS4だけなんですが、PDF.graphicLayerOptions.graphicLayers[0].currentVisibility など参照するとちゃんとbooleanが返るんですが、その親のグラフィックレイヤーオブジェクトをESTKのデータブラウザで覗いてやろうとするとプロパティのほとんどがundefinedなんですね。これはESTKだけの問題(ひょっとしたらウチの環境だけの不具合)かも知れませんが。。そんなんで検証が難航しております。
    当初の想像以上に厄介なブツのようなのと、進行が数件に分かれているのとと、
    これは有名どころの掲示板w に展開した方がいいかなーと思います。
    ちょっと投稿の文言をまとめる時間的余裕は今週いっぱいなさげですが‥

オメガ へ返信する コメントをキャンセル

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

*