こんにちは、デジタル事業本部の藤田です。
前回はIllustratorのドキュメントを開いてファイルメニューから選択したスクリプトで配置画像を収集する方法についてのお話でした。今回は、同じ配置画像収集でもIllustratorを読み取るだけで収集するドロップレット版について書いてみようと思います。
● Illustratorの中身
Illustratorのリンクファイルについての情報がどこに記述されているかというと、「ファイル」メニュー→「ファイル情報」にあります。
タブがたくさんありますが、右端から2つめの「詳細」タブをみると、いろいろなプロパティをみることができます。この中の「XMP メディア管理プロパティ/xmpMM:Manifest」にはさらにstMfs:referenceという階層があり、stRef:filePathと分類されています。これがドキュメントに配置されたファイルパス情報です。POSIX形式のパスで格納されています。
「ファイル情報」タブの右端「Rawデータ」をみると未整理の生データが記載されており、よくみるとXML形式であることがわかります。
つまり、XMP情報から
<xmpMM:Manifest><stMfs:reference><stRef:filePath>●●●●</stRef:filePath></stMfs:reference></xmpMM:Manifest>
この●●●●の部分を取得すればいいのです。
● XMPの解析
さて、XMPの取得は一体どうすればいいのでしょうか? Adobeのヘルプをはじめネットには様々なリソースがあり、一般的にはExternalObjectやXMPScriptライブラリを使用するようですが、ちょっと違ったアプローチを考えました。
sedコマンドでIllustratorの中を読み込み正規表現で上記タグを取得する方法です。
● sedで読み取る
AppleScriptではシェルコマンドを実行することが可能です。ドラッグされたファイルをsedに渡して上記タグを取得すればIllustratorを起動する必要もありません。
コマンドをターミナルで実行する場合は下記のようになります。
sed -n -e '/<x[am]pMM:Manifest>/, /<\/x[am]pMM:Manifest>/p' (ファイルパス)| sed -n -e 's/^.*<stRef:filePath>\(.*\)<\/stRef:filePath>/\1/p'
sedはオプションの -n とフラグpを付与することでマッチする指定行を表示します。
これで、ファイルパスの文字列のみを取得することができます。ファイルパスさえ取得できればあとは一つのフォルダにコピーするロジックを考えるだけです。
● 指定フォルダへコピー
スクリプトはIllustratorファイルをドラッグするとダイアログがあらわれて指定したフォルダに画像をコピーする仕様となっています。ただし、XMPに記述されたファイルパスに必ず配置画像があるとは限りません。もし存在しない場合はIllustratorファイルと同階層に配置画像があるかどうか確認する必要があります。同階層にも配置画像がない場合は処理終了後に見つからないファイルの名前をダイアログで表示します。
Illustratorを使用せず、ドラッグするだけで配置画像を収集するというのはなかなか不思議な感じがしますが、入稿やデータを他人に渡す際にお役にたつのではないでしょうか?
このスクリプトはタクトシステムのHPで無料配布していますので、よろしかったらぜひダウンロードしてください。
● 【2021/3/23追記】XMP の解析を刷新しました!
Adobe Creative Cloud が進化するにしたがって上記の sed による正規表現では XMP メタデータの解析も不十分となりました。というわけでスクリプト内における XMP メタデータを JavaScript による ExternalObject のシミュレートでおこなっています。スクリプトを使う側からは大きな変更はありません。
XMPはAdobe Systems, Inc. の米国及びその他の国における商標です。