見出し画像

Illustratorでの埋め込み・埋め込み解除

Illustratorではリンク画像を埋め込んだり、埋め込み解除を行うことができます。

  • 現在、「埋め込み」「埋め込み解除」とも、複数オブジェクトを同時に実行できます

  • 埋め込み解除時に選択できる形式は「PSD」または「TIFF」のみです。また、ファイル名は元のファイル名を参照しますが変更できます。

  • 複数画像を同時に埋め込み解除する場合、[このフォルダーに対して選択したすべての画像の埋め込みを解除]オプションをONにすると、形式は一律、ファイル名を「aaa」とすると、「aaa 1」「aaa 2」のようにナンバリングされます。

面倒なのが「Photoshop読み込みオプション」です。複数画像を同時に埋め込むとき、毎回出てきますので面倒です。

[レイヤーをオブジェクトに変換]オプションを選択すると大きさが変わってしまうことがあるため、PSDファイルの構造を保持したままにしたい場合を除き、[複数のレイヤーを1つの画像に統合]オプションを選択します。

「リンク画像の埋め込み」を合理化したい

Illustratorの基本機能では「リンク画像の埋め込み」は[リンク]パネルメニューをたどるしかありません。

  • キーボードショートカットを設定できない

  • 右クリックから実行できない

  • アクションに登録できない

さらに、Photoshopのファイルの場合には[Photoshop読み込みオプション]ダイアログボックスを処理する必要があります。

スクリプトを使って埋め込む(1)

次のようなスクリプトで実行可能。
また、[Photoshop読み込みオプション]は表示されず、[複数のレイヤーを1つの画像に統合]オプションが選択されたものとして処理されます。

// 選択されたオブジェクトを取得
var selectedObjects = app.activeDocument.selection;

// 選択されたオブジェクトをループ処理
for (var i = 0; i < selectedObjects.length; i++) {
    // 選択されたオブジェクトがリンク画像の場合
    if (selectedObjects[i].typename == "PlacedItem") {
        // リンク画像を埋め込み画像に変換
        selectedObjects[i].embed();
    }
}

ただし、グループ化された状態になってしまいます(スクリプトを利用していなくても同様)。

スクリプトを使って埋め込む(2)

グループ化を解除するようにしてみました。

// 選択されたオブジェクトを取得
var selectedObjects = app.activeDocument.selection;

// 選択されたオブジェクトをループ処理
for (var i = 0; i < selectedObjects.length; i++) {
    // 選択されたオブジェクトがリンク画像の場合
    if (selectedObjects[i].typename == "PlacedItem") {
        // リンク画像を埋め込み画像に変換
        selectedObjects[i].embed();
        
        // そのオブジェクトに対してグループ解除を実行
        app.executeMenuCommand('ungroup');
    }
}

スクリプトを使って埋め込む(3)

クリッピングマスクがかかっている場合にも対応

// このスクリプトは、選択されたオブジェクトの中にあるリンク画像を埋め込み画像に変換し、
// PSDファイルの場合、埋め込み後にクリップグループでないグループのみグループ解除を行います。
// スクリプト実行後、選択を解除します。

// 選択されたオブジェクトを取得
var selectedObjects = app.activeDocument.selection;

for (var i = 0; i < selectedObjects.length; i++) {
    var currentObject = selectedObjects[i];
    
    // オブジェクトがグループまたはクリッピンググループの場合
    if (currentObject.typename === "GroupItem") {
        // クリップグループかどうかを確認
        var isClipGroup = currentObject.clipped;

        // グループ内のすべてのオブジェクトを取得
        var groupItems = currentObject.pageItems;
        
        // グループ内のオブジェクトをループ処理
        for (var j = 0; j < groupItems.length; j++) {
            var groupItem = groupItems[j];
            
            // グループ内のオブジェクトがリンク画像の場合
            if (groupItem.typename === "PlacedItem") {
                // PSDファイルかどうかを確認
                if (groupItem.file && groupItem.file.name.match(/\.psd$/i)) {
                    // リンク画像を埋め込み画像に変換
                    groupItem.embed();

                    // クリップグループでない場合に限りグループ解除を実行
                    if (!isClipGroup) {
                        app.executeMenuCommand('ungroup');
                    }
                } else {
                    // その他のリンク画像を埋め込み画像に変換
                    groupItem.embed();
                }
            }
        }
    } 
    // グループでない場合、リンク画像をチェック
    else if (currentObject.typename === "PlacedItem") {
        // PSDファイルかどうかを確認
        if (currentObject.file && currentObject.file.name.match(/\.psd$/i)) {
            // リンク画像を埋め込み画像に変換
            currentObject.embed();
            // グループ解除を実行
            app.executeMenuCommand('ungroup');
        } else {
            // その他のリンク画像を埋め込み画像に変換
            currentObject.embed();
        }
    }
}

// スクリプト実行後、選択を解除
app.activeDocument.selection = null;

ダウンロード

ここから先は

3字 / 2ファイル
月に10-20本くらいの記事を投稿しています。定期購読されると、更新のお知らせを受け取ったり、マガジン限定記事やサンプルファイルをダウンロードできます。 購読を開始した月に更新された記事から読むことができます(初月無料)。

DTP Transit 定期購読マガジン

¥100 / 月 初月無料

マガジン限定記事やサンプルファイルをダウンロードできます。

定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5