jsで無理矢理Illustratorのドキュメントの裁ち落としサイズを取得

Illustrator, javascript

jsでできそうでできないIllustraotrのドキュメントの裁ち落としサイズの取得。一時期某フォーラムでも話題になって最終的にC++で書かれた専用のプラグインを用意することで解決という結局jsのみでは解決できない結論に至ってました。
しかしそれでもなんとかjsから裁ち落としのサイズを取得だけでもしたいという方もおられるかもしれません。という事でjsから無理矢理ドキュメントの裁ち落としサイズを読み込むExtensionを作成しました。

まずjsから裁ち落としのデータにアクセスするオブジェクトモデルがイラストレーターにないのでIllustratorのAiファイル情報からテキストとして読み込む事により引っ張る事が可能です。このAiファイルを保存する際に圧縮にチェックを入れると裁ち落としサイズの情報が読み込めないので必ず非圧縮のAiデータを用意する必要があります。なんでも良いので非圧縮のAiデータをテキストエディタで読み込んでみましょう。

適当なデータを用意

圧縮を使用をチェックオフ

 

ここから保存されたAiデータの中身を読み込みます。

Aiデータの中身のテキスト

テキストエディタで読み込むと莫大なテキストが表示されます

その中で数値、 /Real (BleedTopValue)のような項目があるはずです。これこそが裁ち落としのサイズ情報になります。(単位はpoint単位なので注意)その他Bleed(Buttom or Left or Right)Valueといった具合に各種方向の裁ち落としデータが存在しているはずなのでここから読み込むこととしましょう。ちなみに

ここは読み込まない

ここに表示されているようなBleedBoxやArtBoxの項目にそれっぽい情報が表示されていますがここからは正確な裁ち落とし情報は取得できません。この項目は圧縮して保存しても表示されますがここから取得しないようにしてください。

一連のscriptの流れとしてアクティブドキュメントを一度非圧縮で保存。その後テキストとして読み込み、正規表現で該当の部分を抜き出すという流れになります。まずは非圧縮でAiデータを保存。

compressedにブーリアンを代入すると圧縮を設定できます。テキストデータの読み込みですが古びたjsxの処理スピードだと莫大なテキストの読み込みに時間がかかるせいか何度もスタックしたのでExtensionを通じてNode.jsのfs.FileReadSyncで読み込みます。

jsxで保存後にファイルパスをCEP側で受け取りますがデスクトップパスがjsx側だと~Desktopと省略されてこれがNode側で読み込む場合にエラーになります。Nodeではデスクトップパスもきっちりフルパスで設定しないといけないのでreplace(/~\/Desktop/,dir_desktop);でデスクトップパスをフルパスに置き換えます。

その後にfs.readFileSyncで読み込み。読み込まれたデータはバイナリ化されていたのでtoString()でstring型に変換。最後に正規表現で抜き出せば裁ち落としのデータが読み込めます。ただこの方法だと一々Aiデータを保存し直さないといけないのと読み込み処理に時間が掛かるのでできるならやはりプラグインからアクセスするのが理想的だと思います。

Git hub 裁ち落とし取得Extension

Beer 寄付してサイトを応援する。