JavaScript в Adobe Illustrator

JavaScript в Adobe Illustrator

В каждый конверт с магнитиками 42magnets мы вкладываем пару скидочных купонов, чтобы клиентам было приятней делать следующие заказы. Работа с купонами делается преимущественно руками, и я захотел её немного автоматизировать.

Нам приходилось вручную переносить заранее сгенерированные промо-коды в шаблон, на котором помещается 14 кодов. Коды не должны содержать 0 и О, а также 1 и I — их можно перепутать. Также желательно избегать символов, которые выглядят одинаково в кириллице и латинице — A, B, C, E, H, I, K, M, O, P, T, X — люди по ошибке могут вводить коды в русской раскладке. Но мы не стали так сильно заморачиваться: главное, чтобы присутствовал хотя бы один латинский символ — тогда становится понятно, как вводить код.

Шаблон с промо-кодами

Переносить коды, по 14 раз нажимая ⌘X ⌘V, не очень удобно, да и есть риск допустить ошибку. Когда-то я слышал о том, что Иллюстратор может выполнять JavaScript, и хоть у меня не очень много опыта в программировании, я захотел попробовать написать что-то простое, что решит мою задачу. Поделюсь своим опытом.

Я создал файл [42] Сodes-10.jsx и положил его в папку /Presets/%lang%/Scripts/. Запускаю скрипт из меню File → Scripts. Тестирую код прямо в Иллюстраторе.

// ищем слой «codes»
var layerRef = activeDocument.layers.getByName('codes');

// показываем поле ввода, куда нужно вставить коды
var codes = prompt('Вставьте 14 промо-кодов', '');

// превращаем коды в массив
// каждая строка будет отдельным элементом
var codesArray = codes.split(/\n/);


// проверяем количество кодов
if (codesArray.length !== 14) {
  alert('Неправильное количество кодов.');
}

// если кодов нужное количество,
else {

  // то каждый текстовый блок в слое «codes»...
  for (var i = 0; i < layerRef.textFrames.length; i++) {

    // ... будет заменён на соответствующий промо-код
    layerRef.textFrames[i].contents = codesArray[i];
  }
}

Работает! После краткосрочной эйфории мысль пошла дальше: как ещё больше автоматизировать? Может, генерировать коды прямо в скрипте и научить сохранять в файл? Или вставлять любое количество кодов, а на выдаче получать страницы? Автоматически вставлять коды из файла? Автоматически отправлять на печать? Нет, пока нет. Быстрое решение позволяет экономить четыре минуты из пяти на каждом листе. На остальные решения уйдёт значительно больше времени, а сэкономят они секунды.

Возможно, мы сделаем проще и вообще обойдёмся без Иллюстратора — теоретически, можно генерировать коды сразу в PDF, а потом, когда нужно, распечатывать. Но это следующий шаг.

Для более широкого применения можно написать скрипт, который переносил бы из текстового файла имена участников конференции на шаблон с бейджами — дизайнеры, делавшие такое вручную, оценят.


Кстати, если вы ещё не заказывали себе магнитики на 42magnets, рекомендую вам попробовать! Наши ребята умеют делать из фотографий очень хорошие магниты, которые одинаково хорошо смотрятся как на холодильнике, так и на магнитной доске. Напишите мне и я пришлю вам промо-код на скидку 25%. Заказать магниты можно здесь — 42magnets.ru.

Промо-коды 42magnets
Несколько впечатлений от Москвы Спасибо, Psyho