トリミングの自動化


Notice: Trying to access array offset on value of type bool in /var/www/html/gackey/wp-content/plugins/wp-word-count/public/class-wpwc-public.php on line 123

前回の記事に上げた、トリムマーク(分割されたもの)で作成されたデータのトリミング自動化を試みるよ。IllustratorはjavaScriptをサポートしてるんでこれを使用。自動化の手順(フロー)としては、

  1. トリムマークを選択する
  2. 選択されたトリムマークを基に、アートボードを設定する。
  3. PDF保存する。

文章で表すだけならホント簡単だね、、、

まずはお手軽に作成

トリムマークの選択

分割されたままの状態と仮定する

人間であればモニターに表示されたトリムマークの「形」を視認することによってトリムマークを識別できるんだけど、スクリプトでは一定の条件に一致するものをトリムマークとして識別させなければならない。では、トリムマークを条件付けできる特徴と言うと、

  • 線の色はレジストレーションで、塗りはナシ
  • 線幅は0.3pt
  • 4つの角トンボと4つのセンタートンボがある

となっているハズ(分割されているので変更されている可能性がある)なので、これに該当するオブジェクトがトリムマークである可能性が非常に高い。後は、ドキュメント上の全てのオブジェクトに対して、条件に合致したヤツのselectedフラグをtrueにすればオッケーなんだけど、もう少し使い勝手を吟味する。

そもそも、トリムマークを選択するのは、次項でアートボードを設定するためだよね。となると、手動の場合と同様にセンタートンボさえ選択できればオッケー。んじゃ、センタートンボの特徴は?ってえと、

  • 線の色はレジストレーションで、塗りはナシ
  • 線幅は0.3pt
  • 線の長さは24pt

ってなトコで、これらの条件を満たす直線オブジェクトを選択できれば良さそう、、、なんだけど、やっぱりトンボを修正されていると選択できない。

修正されたトリムマークもある

どんな感じに修正されているか調べてみると、

  • 線の色をK100やC100M100など、使用色のみにしている
  • 線幅を細くしている

ってのがほとんどだね。うん、気持ちはワカル。自動分版でトリムマークのみの出力ミスを防ぐためとか、印刷の見当精度を上げるためとか。そこで、トンボの選択条件を少し緩和してみた。

  • 線の色は問わない
  • 線幅は0.14〜0.32pt
  • 線の長さは24pt
Math.round(targetPath.strokeWidth*1000) <= 320
&&
Math.round(targetPath.strokeWidth*1000) >= 140
&&
Math.round(targetPath.length*1000) == 24000

うん、イイ感じだ。

アートボードの設定

続いて、アートボードを仕上がりサイズにフィットさせるよ〜。と、その前に。一つのドキュメントに複数のアートボードが存在した状態でPDFを作成すると、複数ページのPDFができちゃったりするんで、不要なアートボードを削除します。

function monoArtboard()
{
  var activeDoc = app.activeDocument;
  if ( activeDoc.artboards.length > 1 )
  {
    for ( var j = activeDoc.artboards.length-1 ; j > 0 ; j-- )
    {
      activeDoc.artboards.remove(j);
    }
  }
}

こんな感じ。んで、フィッティング。

function resizeArtboard()
{
  var activeDocument = app.activeDocument;
  activeDocument.fitArtboardToSelectedArt(0);

  var activeArtboard = activeDocument.artboards[0];
  activeArtboard.artboardRect =
  [
    activeArtboard.artboardRect[0] + 36,
    activeArtboard.artboardRect[1] - 36,
    activeArtboard.artboardRect[2] - 36,
    activeArtboard.artboardRect[3] + 36
  ];
}

.fitArtboardToSelectedArt()で選択されたパスにアートボードをフィットさせてから、上下左右を36ptずつ加減してます。

PDF保存

saveOptsPdf.pDFPresetとか使ったりして保存するだけですね。

お手軽故の問題点

既にお気付きの方もいらっしゃると思いますが、上記のお手軽手法はとても限定的なんですよ。一つのドキュメントに複数頁がある場合の対処がダメで、、、画像の方が分かりやすいかな?

こーゆーのが、

こーなっちゃいます。なので、もうちょっと?手を加えていきます。

今回はここまで。次回へ続きます。

コメント