Illustratorの変更箇所を確認するスクリプト

最終更新日

みなさまにおかれましてはご健勝のこととお慶び申し上げる次第なんですが、梅雨前線どこいった???
とても暑くてゲンナリしてしまいますが、まだ6月なんですよね…先が思いやられるのですが、以前Illustratorドキュメントの前回からの変更差分を差の絶対値で可視化するというやつをやりました。まあ、それなりに役に立つんですけど、もうちっと見やすくなったりしないだろうかと思案していました。印刷業界に身を置く方々はあおり検版ってやつをご存知かと思います。版の上に最終プリントを重ねて部分的に外したり被せたりしながら読み上げて検証するってやつなんですけど、あのパタパタするやつって結構違いが把握しやすいわけです。
今回はそのパタパタってするやつをIllustratorドキュメント上でやってしまおうってやつです。

使い方
1.スクリプトを実行します。初回実行時は現在の状態をcaptureフォルダに保存するためにドキュメント上ではなんの変化もありません。そのまま編集作業を続行します。

2.編集を終えて検証する際にスクリプトを実行します。すると、前回の状態を配置したレイヤー「checkLayer1」と最新の状態を配置したレイヤー「checkLayer2」の2つが追加されます。

3.レイヤーパネルで「checkLayer2」の目アイコンをオン/オフをしながらドキュメントを眺めてください。編集部分がよく分かると思います。

4.検証がおわったら「checkLayer1」「checkLayer2」の2つのレイヤーは中身ごと捨ててください。その際には他のレイヤーを捨てたりしないようご注意ください。

(function()
{
  var dc = app.activeDocument;
  var tgt = dc.artboards[0];
  var fdr = Folder("~/Desktop/capture");
  if (!fdr.exists) fdr.create();
  var pref = "/" + dc.name + "_"; 
  var n = 0;
  if (dc.XMPString.indexOf("ai_capture")>0)
  {
    n = getDocumentTag(dc);
    n++;
    setDocumentTag(dc, n);
  }
  else
  {
    setDocumentTag(dc, n);
  }

  var fileName = fdr + pref + n + ".png";
  cauture(fileName, dc.artboards[0]);
  if(n>0)
  {
    try
    {  
      var lyr = activeDocument.layers.getByName("checkLayer1");
    }
    catch(e)
    {
      var lyr = app.activeDocument.layers.add();
      lyr.name = "checkLayer1";
    }
    var im0 = lyr.placedItems.add();
    var fn = fdr + pref + (n-1).toString() + ".png";
    im0.file = new File(fn);
    im0.top = 0;
    im0.left = 0;
    try
    {  
      lyr = activeDocument.layers.getByName("checkLayer2");
    }
    catch(e)
    {
      lyr = app.activeDocument.layers.add();
      lyr.name = "checkLayer2";
    }
    var im1 = lyr.placedItems.add();
    fn = fdr + pref + n.toString() + ".png";
    im1.file = new File(fn);
    im1.top = 0;
    im1.left = 0;
  }
    
  function getDocumentTag(dc)
  {
    var xmp = dc.XMPString;
    var xmpMeta = new XMPMeta(app.activeDocument.XMPString);
    var ns = "http://ten-artai.com/tags/";
    var tag = xmpMeta.getProperty(ns, "version").toString();
    return Number(tag);
  }


  function setDocumentTag(dc, num)
  {
    var xmp = dc.XMPString;
    if (ExternalObject.AdobeXMPScript == undefined) 
    {
      ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
    }
    var xmpMeta = new XMPMeta(xmp);
    var ns = "http://ten-artai.com/tags/";
    var prefix = "ai_capture";
    XMPMeta.registerNamespace(ns, prefix);
    xmpMeta.setProperty(ns, "version", num.toString());
    dc.XMPString = xmpMeta.serialize();
  }

  function cauture(fileName, targetArtboard)
  {
    var captureOpts = new ImageCaptureOptions;
    captureOpts.matte = true;
    captureOpts.antiAliasing = true;
    captureOpts.resolution = 600;
    app.activeDocument.imageCapture (File(fileName), targetArtboard.artboardRect, captureOpts);
  }
})();

スクリプトを実行するとスクリーンキャプチャが蓄積します。このスクリーンキャプチャはデスクトップ上の「capture」フォルダに保存されています。Illustratorファイルの名称+連番で保存されています。数字が大きいほど最新です。必要のないものは適宜処分してください。

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする