Skip to content

Instantly share code, notes, and snippets.

@fardm
Last active August 4, 2025 18:38
Show Gist options
  • Select an option

  • Save fardm/f594595e3cf9f314f69f68c55371c50d to your computer and use it in GitHub Desktop.

Select an option

Save fardm/f594595e3cf9f314f69f68c55371c50d to your computer and use it in GitHub Desktop.
اسکریپت خروجی گرفتن از هر آرت‌بورد در ایلستریتور

اکسپورت آرت‌بورد در ایلستریتور

توی ایلستریتور امکان خروجی گرفتن هر آرت بورد با فرمت ai وجود نداره. برای اینکار مجبورید برای هر آرت بود یک فایل جدید بسازید محتواش رو کپی کنید و خروجی بگیرید.

اگر تعداد آرت بورد ها زیاد باشه این کار زمان بره. به خاطر همین با کمک هوش مصنوعی این اسکریپت رو درست کردم که خود نرم افزار اتوماتیک این کار رو انجام بده.


راهنمای استفاده

  1. فایل ExportArtboards.jsx رو دانلود کنید.
  2. ایلستریتور رو باز کنید و این مسیر رو دنبال کنید:

File > Scripts > Other Script...

  1. فایل ExportArtboards.jsx رو انتخاب کنید.
  2. پوشه مقصد رو انتخاب کنید.

نسخه بدون پیام مرحله‌ای

بعد از اینکه هر آرت بورد خروجی گرفته شد یک پیام میاد که باید اون رو تایید کنید. تا این پیام رو تایید نکنید خروجی بعدی شروع نمیشه. این کار به خاطر کاهش سرعت اجرای اسکریپت و جلوگیری از کرش کردن نرم افزار هست.

یک نسخه دیگه هم قرار دادم که این پیام رو نمایش نمیده و بلافاصله میره سراغ فایل بعدی. البته تا جایی که من تست کردم این نسخه ایراد داره و ممکنه بعضی از آرت بورد ها رو خالی خروجی بگیره.

اگر می خوایید از این نسخه استفاده کنید فایل ExportArtboards_Fast.jsx رو دانلود کنید.

var originalDoc = app.activeDocument;
var originalDocName = originalDoc.name;
var destFolder = Folder.selectDialog("Select folder to save .ai files");
if (destFolder != null) {
var artboardCount = originalDoc.artboards.length;
for (var i = 0; i < artboardCount; i++) {
for (var d = 0; d < app.documents.length; d++) {
if (app.documents[d].name === originalDocName) {
app.activeDocument = app.documents[d];
break;
}
}
var doc = app.activeDocument;
doc.selection = null;
doc.artboards.setActiveArtboardIndex(i);
app.executeMenuCommand("selectallinartboard");
if (doc.selection.length === 0) {
alert("⛔ آرت‌بورد " + (i + 1) + " (\"" + doc.artboards[i].name + "\") هیچ آیتمی نداره. رد می‌شه.");
continue;
}
app.copy();
var abBounds = doc.artboards[i].artboardRect;
var abWidth = abBounds[2] - abBounds[0];
var abHeight = abBounds[1] - abBounds[3];
var abName = doc.artboards[i].name;
var newDoc = app.documents.add(DocumentColorSpace.RGB, abWidth, abHeight);
app.executeMenuCommand("pasteFront");
newDoc.artboards[0].name = abName;
var saveFile = new File(destFolder + "/" + abName + ".ai");
var saveOptions = new IllustratorSaveOptions();
newDoc.saveAs(saveFile, saveOptions);
newDoc.close(SaveOptions.DONOTSAVECHANGES);
// پیام مرحله‌ای
alert("✅ آرت‌بورد " + (i + 1) + " با نام \"" + abName + "\" ذخیره شد.");
// تاخیر 1 ثانیه‌ای بین مراحل (1000 میلی‌ثانیه)
$.sleep(1000);
}
alert("🎉 تمام آرت‌بوردهای معتبر ذخیره شدند.");
}
var originalDoc = app.activeDocument;
var originalDocName = originalDoc.name;
var destFolder = Folder.selectDialog("Select folder to save .ai files");
if (destFolder != null) {
var artboardCount = originalDoc.artboards.length;
for (var i = 0; i < artboardCount; i++) {
for (var d = 0; d < app.documents.length; d++) {
if (app.documents[d].name === originalDocName) {
app.activeDocument = app.documents[d];
break;
}
}
var doc = app.activeDocument;
doc.selection = null;
doc.artboards.setActiveArtboardIndex(i);
app.executeMenuCommand("selectallinartboard");
if (doc.selection.length === 0) {
$.writeln("⚠️ آرت‌بورد " + (i + 1) + " (\"" + doc.artboards[i].name + "\") خالی است. رد شد.");
continue;
}
app.copy();
var abBounds = doc.artboards[i].artboardRect;
var abWidth = abBounds[2] - abBounds[0];
var abHeight = abBounds[1] - abBounds[3];
var abName = doc.artboards[i].name;
var newDoc = app.documents.add(DocumentColorSpace.RGB, abWidth, abHeight);
app.executeMenuCommand("pasteFront");
newDoc.artboards[0].name = abName;
var saveFile = new File(destFolder + "/" + abName + ".ai");
var saveOptions = new IllustratorSaveOptions();
newDoc.saveAs(saveFile, saveOptions);
newDoc.close(SaveOptions.DONOTSAVECHANGES);
// پیام کنسولی (نه به صورت alert)
$.writeln("✅ آرت‌بورد " + (i + 1) + " با نام \"" + abName + "\" ذخیره شد.");
// تاخیر 1500 میلی‌ثانیه (1.5 ثانیه)
$.sleep(1500);
}
alert("🎉 خروجی‌گیری تمام شد. وضعیت را در Console ببینید (ExtendScript Toolkit).");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment