コード
//アプリ側のカラー設定を取得
var myApp = app.colorSettings;
var myAppCMYK = myApp.workingSpaceCMYK;
var myAppRGB = myApp.workingSpaceRGB;
var myAppCMYKPolicy = myApp.cmykPolicy;
var myAppRGBPolicy = myApp.rgbPolicy;
//ドキュメントの設定をアプリ側に合わせる
var myDoc = app.activeDocument;
myDoc.cmykProfile = myAppCMYK;
myDoc.rgbProfile = myAppRGB;
myDoc.cmykPolicy = myAppCMYKPolicy;
myDoc.rgbPolicy = myAppRGBPolicy;
//表示用にポリシーを日本語に
function getPolicyDescription(docPolicy) {
var policies = {
"COLOR_POLICY_OFF": "✅オフ(作業用を使用)",
"COMBINATION_OF_PRESERVE_AND_SAFE_CMYK": "✅CMYK値保持(画像プロファイル破棄)",
"CONVERT_TO_WORKING_SPACE": "⚠️作業用に全変換",
"PRESERVE_EMBEDDED_PROFILES": "➡️埋め込みを保持"
};
return policies[docPolicy] || docPolicy;
}
alert("埋め込みプロファイルを\nRGB:"+myAppRGB+"\nCMYK:"+myAppCMYK+"\n\nドキュメントのポリシーを\nRGB:"+getPolicyDescription(myAppRGBPolicy)+"\nCMYK:"+getPolicyDescription(myAppCMYKPolicy)+"\nに変更しました。")
なんのために作ったか
InDesignドキュメントには、作成時のカラー設定の
- RGBとCMYK両方のカラープロファイル
- RGBとCMYK両方のカラーマネジメントポリシー
が埋め込まれます。
このうち、カラープロファイルは後から変更が可能です。
編集メニュー>プロファイルの指定や、プロファイル変換を使用
Illustratorはドキュメントモードのプロファイルのみ埋め込み可能で、その他は開いている時のカラー設定内容に依存します
ですが、ドキュメントに埋め込まれたカラーマネジメントポリシーを変更する機能、メニューは、InDesignには用意されていません。 このため作成時のカラー設定内容が不適切なカラーマネジメントポリシーであった場合はずっとそのまま不適切な変換が行われることになり、また確認する術が(標準では)存在しないため沼にハマることになります。
カラーマネジメントポリシーとは
作業用として指定したカラープロファイルと、画像等に埋め込まれたプロファイルが異なる場合、どのように処理するか、を指定する項目です。
例えば、通常はこのようになっています(一般用 - 日本2でも同じ)
- RGB:埋め込まれたプロファイルを保持
- CMYK:カラー値を保持(リンクされたプロファイルを無視)
選択できる項目の説明
プルダウンすると次のような内容が選択できます(CMYKの場合)
項目 | 動作 |
---|---|
オフ | プロファイルが埋まっていようがいまいが無視して、作業用に指定したプロファイルを使用して表示する。作成時のプロファイルと違う場合色が変わる(数値は変わらない) |
カラー値を保持 | (※CMYKのみ)プロファイルを無視し、作業用プロファイルで表示する。オフと同じ |
埋め込まれたプロファイルを保持 | プロファイルが埋め込まれていればそれを使って表示する。無ければ作業用を使って表示する |
作業用スペースに変換 | プロファイルが埋め込まれていれば、作業用プロファイルにプロファイル変換を行う。色は変わらないが値が変わる。無ければ作業用を使って表示する |
もし、CMYKポリシーが「作業用スペースに変換」だったとすると、
- 作業用がJapan Color 2011 Coated
- 埋め込みプロファイルがJapan Color 2001 Coated
と異なる場合、プロファイル変換が行われてCMYK値が変わってしまいます。
K100のみで作った画像が、プロファイルが異なる場合に片方がK100ではなくなる、といったことが起きます。
▼上がドキュメントプロファイルと異なるプロファイルを埋め込んだCMYKデータ。4c割れしています。PDF出力してもこうなります。
ポリシーだけは後から変更できない
正確には、後から変更する機能が標準で用意されていません。
script経由での変更は可能です。
もし、
InDesignドキュメントのカラープロファイルを表示するjsx
で
CMYKポリシーが全変換、となっていた場合、とりあえず本スクリプトを使って現在のアプリ側カラー設定にプロファイル、ポリシー両方を合わせてやることで、ポリシーも変更が可能になります。
UI付きを最初考えましたが、面倒になって単にカラー設定内容を引っ張ってくるだけにしました。
初期設定のカラー設定プロファイルではCMYKポリシーはカラー値を保持になっているので、よっぽど変なことをしなければ使うことはないスクリプトですが、一応念のため。