August 14

Минус 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)

  • Что делает: Полный цикл подготовки к печати:
    1. Автоматический перевод всего текста в кривые.
    2. Сбор всех связанных изображений (placed items) в единую папку /links.
    3. Экспорт векторов в PDF с вылетами под обрез и метками реза.
    4. Генерация сборных JPEG-превью для всех артбордов.

Пакетный поиск и замена «Ищейка» (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. Они выполняют часовую работу за пару минут, гарантируют отсутствие технических ошибок и позволяют команде фокусироваться на креативных задачах, а не на технической рутине