Иллюстратор и Джаваскрипт

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

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

Иногда нужно табличные данные вставить и покрасить каждое значение оттенком, зависящим от этого значения. Иногда нужно во всей таблице взять и во всех значения после запятой оставить ровно два знака, набрав их шрифтом чуть меньше. Иногда нужно классы чисел разделить полупробелами. Иногда придуманный удачный формат для каких-то данных хочется опробовать для других данных (например, таблицеграфик каких-то спортивных результатов перестроить для другого матча или заплыва).

Всё это довольно муторная работа, которую хочется автоматизировать.

Так вот, кто-нибудь знает, как это сделать лучше всего? Кажется, адобовские программы как-то поддерживают Джаваскрипт. Как этим воспользоваться? Где задокументированна их объектная модель? Есть ли там консольный режим? Типа, пишешь команду — она сразу же выполняется по энтеру.

Хочется строить график в Иллюстраторе так:

if (line = document.layerNamed ('rus medals')) line.clear ()
else line = document.layers.add ('rus medals')
line.select ()
document.pen (0, 0)
for (i = 0; i <= 16; ++ i) {
  document.pen (i * 10, -medalsByCountryAndDate ('RUS', i + 12))
}

Ну или что-то вроде того. То есть пишем, что хотим от машины, а не делаем это руками. Я чувствую, как вам хочется придраться к этому коду или придумать свой, но это никому не интересная хрень. Смысл в другом: захотели построить график Новергии — бац, построили. Решили, что 10 пикселей плохое расстояние — исправили на 12, перестроили. Захотели поставить восклицательный знак на графике каждый раз, когда его поднимает золотая медаль — дописали строчку. Захотели воткнуть грустный норвежский флаг везде, где проиграли золото Бьёрндалену — дописали ещё пару строчек.

Кто так умеет, научите меня, а?

Дальше
14 комментариев
Takkmoil 2010

Вот как-то так: http://www.adobe.com/devnet/illustrator/scripting/ (не люблю тыкать в мануалы, но лучше не объясню).

Кстати, куда делась галочка «видно только автору блога»?

Илья Бирман 2010

О, круто, оно работает. Спасибо!

Алисей Лебедев 2010

Я тоже в поиске. Когда нужно обработать большой набор данных хитрым способом, то я механическую часть делаю в HTML, потом скриншот вставляю куда нужно и добавляю подписи, либо, если HTML не тянет объем данных — карта из 100 000 кликов, механическую часть делаю в  Cairo, он очень быстрый и может генерить как векторные, так и растровые изображения. Потом это я могу вставить куда угодно, наложить эффекты.

Некоторые, говорят, с успехом пользуются Processing, он поддерживает экспорт в вектор. И чудеса в нем действительно творят неземной красоты: http://www.generative-gestaltung.de/

Bolk 2010

Как выглядит такой JS, ты можешь посмотреть у меня в «Бутылках пива» :)

Дмитрий 2010

В Excel 2007 есть неплохое условное форматирование.

Ярослав Патрикеев 2010

Да-да, я вот тоже этим давно интересуюсь. Расскажешь, когда добьёшься чего-то в этом?

Виктор 2010

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

Не совсем уловил смысл этой фразы. Каким образом первая часть предложения согласуется со второй? Это примерно тоже самое, что «я люблю ходить, но на улице дождь». Кроме того, в слове «стоят» буква «р» пропущена.

Илья Бирман 2010

Согласен, фраза кривовата.

Kalan 2010

Рисуй в SVG.

Сергей 2010

Чем actionscript плох?

Илья Бирман 2010

Это же что-то про Флеш вроде?

Сергей 2010

Флеш, да. Но, наверное, неуместное предложение. Не уверен, что во флеше можно быстро рисовать хорошую инфографику.

Иван Семенов 2010

Есть чудесный язык — Пайтон. И пара простеньких програмок:
http://nodebox.net/code/index.php/Home
http://drawbot.com/
Там есть необходимые мануалы и примеры. Полученные картинки можно сохранить в векторном формате и открыть Иллюстратором.

Валерий Сибиковский 2010

Есть вот такая штука еще:
http://scriptographer.org/

Это джаваскриптовый фреймворк для иллюстратора (насколько я понимаю), там люди свои инструменты пишут.

Анатолий Rr Буров 2010

Для подобных штук использую питон, сохраняющий в svg.

Михаил Баранов 2010

Есть подозрение, что Adobe довольно сильно задвигает Illustrator (графики там до сих пор черно-белые по умолчанию, например).

Синтаксис AdobeScript нужно искать на сайте самой Adobe, и он там был, когда я копал скрипты для Photoshop.

DnV 2010

Может не совсем то, но есть Google Chart API (http://code.google.com/intl/ru/apis/chart/image_charts.html).
Генерить можно и джаваскриптом (http://dnv.net23.net/mstest.html).
Есть у них и более крутая штука, Visualization API (http://code.google.com/intl/ru/apis/visualization/interactive_charts.html), она так вообще полностью на джаваскрипте.

Мои книги