アートボード変換とアウトライン化の一括処理。
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 #イラレ