何重にも重なったクリッピングマスクを解除する

PDFをAdobe Illustratorで開いた際に発生する、何重にも重なったクリッピングマスクや不要なグループ化は、編集作業の大きな妨げになります。

これらを一括で解除し、構造をクリーンにするためのJavaScript(ExtendScript)を作成しました。

下記コードをコピーし、テキストエディタ(メモ帳やVS Codeなど)に貼り付けます。

ファイル名を CleanUpPDFHierarchy.jsx として保存します。

Illustratorで対象のファイルを開きます。

  • 特定の部分だけ処理したい場合は、そのオブジェクトを選択してください。
  • 全体を処理したい場合は、何も選択しないでください。

メニューの [ファイル] > [スクリプト] > [その他のスクリプト] から、保存したファイルを選択して実行します。

/*
 * CleanUpPDF_v2.jsx
 * エラー対策版:多重マスクとグループを一括解除
 */

(function() {
    if (app.documents.length === 0) return;

    var doc = app.activeDocument;
    var targetItems = doc.selection.length > 0 ? doc.selection : doc.pageItems;

    // 処理の確認
    if (!confirm("ドキュメント全体(または選択範囲)の階層を完全に解除しますか?\n※エラーは自動的にスキップします。")) return;

    // 再帰的に処理するメイン関数
    function flattenHierarchy(items) {
        // 後ろからループ(削除や移動によるインデックスずれ防止)
        for (var i = items.length - 1; i >= 0; i--) {
            var item = items[i];

            if (item.typename === "GroupItem") {
                // 1. クリッピングマスクの解除を試行
                try {
                    if (item.clipped) {
                        item.clipped = false;
                    }
                } catch (e) {
                    // マスク解除に失敗しても次へ進む
                }

                // 2. 中身に対して再帰的に処理(さらに深いグループを探す)
                if (item.pageItems && item.pageItems.length > 0) {
                    flattenHierarchy(item.pageItems);
                }

                // 3. グループ解除(中身を外に出す)
                try {
                    var parent = item.parent;
                    while (item.pageItems.length > 0) {
                        // 最初のアイテムをグループの外(グループの直前)に移動
                        item.pageItems[0].move(item, ElementPlacement.PLACEBEFORE);
                    }
                    // 空になったグループを削除
                    item.remove();
                } catch (e) {
                    // グループ解除に失敗した場合はそのまま残す
                }
            }
        }
    }

    // 実行
    try {
        flattenHierarchy(targetItems);
        app.redraw();
        alert("処理が完了しました。\n解除できない特殊なオブジェクトはスキップしました。");
    } catch (err) {
        alert("予期せぬエラーが発生しました:\n" + err);
    }
})();

ぜひ、やってみてね!!!

文句とか、ここを改良してとかは、受け付けませんのであしからず!!

投稿者プロフィール

たきちゃん
愛知県北名古屋市に住むたきちゃんの日常。

印刷・動画・Web制作の株式会社龍巳堂で社長をやっております(^_^)

仕事や趣味の他各種団体での活動などを書いております。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA