Минус 80% рутины на ресайзах: Как я заавтоматизировал верстку для T2 с помощью ExtendScript
Контекст и решаемая задача
Комплекс скриптов написан на JavaScript / ExtendScript для автоматизации повседневных рутинных операций в Adobe Illustrator. Набор инструментов полностью убирает человеческий фактор при предпечатной подготовке (prepress), построении модульных сеток, выравнивании элементов и адаптивном экспорте.
Ключевые показатели эффективности:
- В 10–15 раз ускорение пакетного экспорта и верстки ресайзов.
- 0% ошибок при предпечатной подготовке (исключены пропущенные шрифты, незалинкованные файлы и некорректная цветовая модель).
- 100% соблюдение гайдлайнов за счёт математического расчёта полей и отступов
Разбор ключевых модулей
Модульная сетка и гайды (runT2Grid, scriptOne, scriptTwo)
- Что делает: Автоматически строит внешнюю рамку безопасности и 6 опорных направляющих (центральные оси + пропорциональные сдвиги).
- Логика: Все отступы рассчитываются динамически от меньшей стороны артборда:
var minSide = Math.min(width, height). - Зачем: Мгновенная разметка артборда любого формата под требования брендбука.
Умное распределение элементов (runPaddings, scriptSeven, scriptEight)
- Что делает: Выравнивает выбранные объекты вдоль вертикальной или горизонтальной оси с фиксированным шагом.
- Логика: Определяет координаты, сортирует объекты по порядку (
topилиleft) и выстраивает их с идеальным равным интервалом, не позволяя вылезти за края артборда.
Пропорциональное скругление углов (runRoundCorners, scriptThree, scriptFour)
- Что делает: Находит среди выделения замкнутые прямоугольники и применяет к ним адаптивный радиус скругления.
- Логика: Проверяет топологию объекта (4 точки, равенство противоположных сторон) и пересоздаёт его как
roundedRectangleс сохранением исходных заливок и обводок.
Пакетный Prepress и экспорт (scriptFive, scriptSix, scriptTwelve)
Пакетный поиск и замена «Ищейка» (scriptThirteen_Ischeika)
- Что делает: Рекурсивно сканирует вложенные папки, находит текстовые блоки в AI-файлах, делает замену, пересчитывает размеры рамок и сохраняет результаты.
- Уникальная фича (
fitTextInFrame): Если новый текст не помещается, скрипт автоматически конвертируетPointTextвAreaTextи динамически увеличивает рамку вниз до устранения переполнения (overflows === false).
Генерация ресайзов из данных (scriptTen, scriptEleven_MassVizitki)
- Что делает: Считывает CSV-файлы с размерами или техническими данными и автоматически генерирует файлы нужных габаритов с точной привязкой элементов.
Технические особенности реализации
Безопасная работа с файловой системой (I/O): Реализованы кастомные функции контроля записи waitForFileWritten и освобождения памяти waitForDocClosed, что исключает появление битых PDF/JPG или зависание Illustrator при фоновой обработке сотен файлов.
Адаптивная математика (Relative Scaling): Отсутствие жесткого хардкода размеры/отступы считаются в процентах/долях от меньшей стороны текущего артборда (Math.min(W, H)), что делает скрипты универсальными для макетов любого масштаба.
UI/UX интерфейс: Все сложные скрипты снабжены удобными диалоговыми окнами (ScriptUI) с выбором параметров экспорта (DPI 72/150/300, качество JPEG, метки реза, выбор папок).
Эти скрипты — пример того, как я оптимизирую рутину в дизайне и верстке. Вместо того чтобы вручную переводить 50 макетов в кривые, выставлять метки реза и раскладывать файлы по папкам, я написал скрипты на JS/ExtendScript. Они выполняют часовую работу за пару минут, гарантируют отсутствие технических ошибок и позволяют команде фокусироваться на креативных задачах, а не на технической рутине