Beginner Tech Blog

Beginner Tech Blog Branding

アートボード変換とアウトライン化の一括処理。

2025/07/29 06:28

adobe illustrator のスクリプト実行機能で複数ファイルの一括処理。
実現したいことは

  • 上下左右中央でアートボードサイズの変更(A4に)
  • アウトライン化
  • 最終的に上書き保存

以下のコードで一括処理可能となる。
.jsxファイルとして任意の場所に保存して、イラレのスクリプト実行 > その他スクリプトで選択すると実行できる。

#target illustrator

var folder = Folder.selectDialog("フォルダを選択してください");
if (folder != null) {
  var files = folder.getFiles("*.ai");

  for (var i = 0; i < files.length; i++) {
    var doc = app.open(files[i]);

    try {
      // ✅ 1. テキストをアウトライン化
      createOutlinesForAllText(doc);

      // ✅ 2. 現在のアートボード中央を取得
      var ab = doc.artboards[0].artboardRect; // [左, 上, 右, 下]
      var abCenterX = (ab[0] + ab[2]) / 2;
      var abCenterY = (ab[1] + ab[3]) / 2;

      // ✅ 3. A4サイズ(595 x 842 pt)で中央を基準に再設定
      var newWidth = 595.276;
      var newHeight = 841.89;

      var left   = abCenterX - newWidth / 2;
      var top    = abCenterY + newHeight / 2;
      var right  = abCenterX + newWidth / 2;
      var bottom = abCenterY - newHeight / 2;

      doc.artboards[0].artboardRect = [left, top, right, bottom];

      // ✅ 4. 元の .ai ファイルに上書き保存
      var aiOptions = new IllustratorSaveOptions();
      aiOptions.compatibility = Compatibility.ILLUSTRATOR17; // 必要に応じて調整
      aiOptions.pdfCompatible = true;
      doc.saveAs(files[i], aiOptions);
    } catch (e) {
      alert("エラー: " + e.message);
    }

    doc.close(SaveOptions.DONOTSAVECHANGES);
  }
}

// 🔧 テキストをアウトライン化する関数
function createOutlinesForAllText(doc) {
  for (var i = doc.textFrames.length - 1; i >= 0; i--) {
    try {
      doc.textFrames[i].createOutline();
    } catch (e) {
      $.writeln("アウトライン化できない要素があります: " + e.message);
    }
  }
}

#adobe #illustrator #イラレ

© 2025 Beginner Tech Blog | Built with U