イラストレーターに埋め込まれた画像をBridgeで選んだ画像と入れ替える
イラストレーターに埋め込んでしまった画像で元のファイル情報がまったく欠如してしまってる場合、人間の目で画像を確認しながら再配置する必要があります。それを少し楽にできるかもしれないスクリプト。
えーと。動画にしたけど解りにくいです。
イラストレーターで選択した画像をBridgeで選んだ画像と入れ替えてます。
BridgeTalkの中でさらにBridgeTalkしてみました。
(function(){ function BT(target,src){ var bt=new BridgeTalk(); bt.target = target; bt.body= src; bt.onError = function (btObj) {alert( btObj.body + " (" + btObj.headers ["Error-Code"] + ")" ); }; bt.send(); } BT("bridge",uneval(function(BT){ eval (BT); BT('illustrator',uneval(function(file){ function error(str){alert(str)} if(app.activeDocument.selection.length !== 1){ error("画像を一つだけ選択してください"); return; } var P = app.activeDocument.selection[0]; var F = File(file); if(F.exists){ if(P.constructor.name == 'PlacedItem'){ P.file = F; return; } if(P.constructor.name == 'RasterItem'){ var pA = app.activeDocument.placedItems.add(); try{ pA.file = F; pA.position = P.position; pA.moveBefore(P); pA.width = P.width; pA.height = P.height; P.remove(); }catch(e){ pA.remove(); throw(e); } return; } error("画像ではないものが選択されています。"+P.constructor.name); } })+"('"+app.document.selections[0].path+"');"); })+"("+uneval(BT)+");"); })();
uneval()とeval()を使い引数でfuntionの受け渡しが出来ることが今回の発見です。