Windows XP
Adobe Illustrator CS3
リンクで配置されている画像を全て埋め込みにして、別名保存するJavaScriptです。
リンクで配置されている画像は全て埋め込まれます。ロック、非表示に設定されている画像、ロック、非表示に設定されているレイヤー上の画像も埋め込みにします。別名保存後のファイルは、画像オブジェクトの表示非表示は保持され、画像のロックは全て解除されます。レイヤーの表示状態は保持し、全てのレイヤーがロックされます。
環境によって、埋め込み時に画像サイズ、位置が変わるといった不具合が発生することがあります。ご使用の際は、事前のバックアップ、処理後の確認をお勧めします。確実に画像を埋め込むのであれば、「12 リンクの配置画像の有無を確認する」のスクリプトで、リンクの有無を確認していただき、手動で埋め込み作業を行ってください。
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // AICS3_embed_folder.jsx // 使用されているすべてのリンク画像を埋め込みにします。 // // 2011.05.02 ver.1.0 // // System requirements : Adobe Illustrator CS3 13.0.3 Windows XP SP3 // Copyright(c) 2011 Kuro // http://www3.ocn.ne.jp/~art_mac/ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var folderObj = Folder.selectDialog("Illustratorファイルの入っているフォルダを選択してください"); var folder = Folder.selectDialog("保存するフォルダを選択してください"); if (folderObj != null){ fileList = new Array; fileList = folderObj.getFiles("*.ai"); for (f = 0 ; f <= fileList.length-1 ; f++){ var fileObj = new File(fileList[f]); open(fileObj); flag = fileObj.open(); if (flag == true){ mydocument = app.activeDocument; // レイヤーをカウントする。 layercount = mydocument.layers.length; var visibleflag = []; // レイヤーの表示状態を記憶し、レイヤーの表示、ロック解除を行う。 for( i=0; i<layercount; i++ ){ mylayer = mydocument.layers[i]; visibleflag[i] = mylayer.visible; mylayer.visible = true; mylayer.locked = false; } // 配置画像をカウントする。 picobj = mydocument.placedItems; // 埋め込み。 for( n=picobj.length-1; n>-1; n--){ picobj[n].locked = false; picobj[n].embed(); } // レイヤーの表示状態を元に戻し、ロックする。 for( m=0; m<layercount; m++){ mylayer = mydocument.layers[m]; if( visibleflag[m] == true ){ mylayer.locked = true; }else{ mylayer.visible = false; mylayer.locked = true; } } } namecount = (fileObj.name).lastIndexOf("."); // fileObj.nameの値で"."の位置を取得 fname = (fileObj.name).substr(0, namecount); options = new IllustratorSaveOptions(); options.embedICCProfile=true; savefile = new File(folder.fsName+"/"+fname+".ai"); mydocument.saveAs(savefile,options); activeDocument.close(SaveOptions.DONOTSAVECHANGES); } } alert("処理が完了しました。スクリプトを終了します。");