AIファイルをパッケージしちゃう

最終更新日

Comments: 3

このところ寒の戻りで寒い日が続いていますが、いかがお過ごしでしょうか。わたしはようやく体調が戻って一息ついたところです。しかし、手元にには原稿の山が積み上がっているわけです。
リーフレットとかだと、時間ないと手当り次第にライブラリから画像拾ってきて配置して…てなことやりがちですが、そんなことやっていると「あれ、この配置画像って何処のだっけ???」なんてことにもなりかねません。Indesignではパッケージなんて気の利いた機能があります。なぜ、Illustratorにはないのだろうか、か?
というわけで作っちゃいました。収集するすくりぷとを…

var tgDc = app.documents;
if (tgDc.length>0){
//window dialog---------------------------------------------------------------------
var wString = "";
var d = new Window ('dialog', 'Enter Strings', [100,100,500,350]);

var AIver = new Array();
AIver =["ver.8","CS1","CS2","CS3","CS4","CS5"];
d.verP = d.add('panel', [20,20,400,80], 'Illustrator バージョン選択');

d.verP.DpDLs = d.verP.add('dropdownlist', [25,15,180,30], AIver);
d.verP.DpDLs.selection = 5;

d.olCk = d.add('checkbox', [25,90,400,120], 'アウトライン化AIファイルも生成');
d.olCk.value = false;

d.emCk = d.add('checkbox', [25,115,400,140], '配置画像を埋め込む');
d.emCk.value = false;

d.btP = d.add('panel', [160,180,390,235], '');
d.btP.submitBtn = d.btP.add('button', [20,15,100,35], '作 成', {name:'ok'});
d.btP.cancelBtn = d.btP.add('button', [130,15,210,35], 'キャンセル', {name:'cancel'});

//d.verP.DpDLs.onChange = function(){alert (d.verP.DpDLs.selection)};
d.btP.submitBtn.onClick = function (){main()};
d.show();
}

//collecter main---------------------------------------------------------------
function main(){
    for (i=0;i<tgDc.length;i++){
        if (!tgDc[i].saved) {
            alert ("処理を中止します。\nドキュメントを保存する前にパッケージ化を行うと、手元のデータとの整合性が失われる恐れがあります。");
            d.close();
            return false;
            }
        }
    var version = d.verP.DpDLs.selection - 0;
    var svOpt = new IllustratorSaveOptions();
    svOpt.embedICCProfile = false;
    svOpt.pdfCompatible = false;
    svOpt.compressed = true;
    svOpt.embedLinkedFiles = (d.emCk.value) ? true : false;
    switch (version){
        case 0:
        svOpt.compatibility = Compatibility.ILLUSTRATOR8;
        svOpt.pdfCompatible = true;
        svOpt.compressed = false;
        break;
        case 1:
        svOpt.compatibility = Compatibility.ILLUSTRATOR11;
        break;
        case 2:
        svOpt.compatibility = Compatibility.ILLUSTRATOR12;
        break;
        case 3:
        svOpt.compatibility = Compatibility.ILLUSTRATOR13;
        break;
        case 4:
        svOpt.compatibility = Compatibility.ILLUSTRATOR14;
        break;
        default:
        svOpt.compatibility = Compatibility.ILLUSTRATOR15;
        break;
        }
    var tgVersion = d.verP.DpDLs.selection;
    var olFlg = d.olCk.value;
    var emFlg = d.emCk.value;
    var maxVal = 100;
    var brWidth = 300;
    d.close();
    
    var tgDirNm= Folder.selectDialog('保存先フォルダを指定して下さい');
    var tgDir = new Folder(tgDirNm);
    var imgDir = new Folder(tgDirNm+ '/links');
    if (!imgDir.exists) imgDir .create();

    for (dc=0;dc<tgDc.length;dc++){
        for (i=0;i<tgDc[dc].placedItems.length; i++){
            imgSrc = new File(tgDc[dc].placedItems[i].file.fullName);
            nwFileNm = tgDirNm+"/links/"+ tgDc[dc].placedItems[i].file.name;
            if (imgSrc!=null) imgSrc.copy(nwFileNm);
            nwTgt = new File(nwFileNm);    
            tgDc[dc].placedItems[i].file = nwTgt;
            }
        aiNm = tgDc[dc].name;
        tgFl = tgDirNm +'/'+ aiNm;                    
        var svNm = new File (tgFl);        
        tgDc[dc].saveAs(svNm, svOpt);
        if (olFlg){
            while (tgDc[dc].textFrames.length>0) {
                tgDc[dc].textFrames[0].createOutline();
                }
            tgFl = tgDirNm +'/ol_'+ aiNm;                    
            svolNm = new File (tgFl);        
            tgDc[dc].saveAs(svolNm, svOpt);
            }
        }
    }

使い方
パッケージ化したいAIファイルを開いておきます。(複数でもかまいません)そこでこのすくりぷとを走らせると…

必要なファイル達が一所に集められて、ご丁寧にもリンクも再設定されているというわけです。
まあ、説明にもなってませんが、そんなの必要ないくらい単純です。動かせば分かると。
今回のはややこしい事は全然してませんのでscriptの解説はなしです。

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする

3件のフィードバック

  1. はじめまして。
    いつも便利なスクリプトを使用させて頂いており、大変助かっております。
    「AIファイルをパッケージしちゃう」に関して、現状選択できるillustratorのバージョンはCS5までだと思うのですが、
    CS6以降に対応する予定はございませんでしょうか?
    よろしくお願いします。

daddy へ返信する コメントをキャンセル