Как из шаблона автоматически генерировать тысячи уникальных именных открыток.
Представим, что вы офисная работница, которой босс дал задание поздравить всех клиентов по почте с каким-нибудь праздником. Вам дали шаблон открытки в формате .psd и сказали, что бы завтра были такие же именные для каждого клиента, которых всего-то 1500 штук.
Как поступит обычная девушка офис-менеджер? Она выпьет три чашки эспрессо, подпилит ногти покороче, соберется с духом и будет делать все руками: открывать шаблон, печать имя клиента, сохранять результат, закрывать шаблон. Если дама умеет пользоваться горячими клавишами, то к утру успеет. Но нанесет вред своему здоровью и репутации компании, cделав множество ошибок.
Что сделает офис-менеджер 80 лвл? Она зайдет на iphones.ru, прочитает эту простую инструкцию, через полчаса получит готовые открытки, еще пару часов будет заниматься личными делами, имитируя бурную деятельность, а после покажет шефу досрочно полученный результат.
Эта статья раскроет один из секретов продвинутых офисных работников. Просто открывайте Photoshop и четко следуйте инструкции. Попробуйте прямо сейчас!
Инструкция
1. Подбираем шаблон для открытки
Для выполнения этой инструкции необходим шаблон поздравительной открытки для Photoshop. Его можно нарисовать самому или скачать из интернета (они представляют собой файлы в формате .psd). В сети есть очень много подобной графики, платной и бесплатной.
Для удобства читателя дадим ссылки на подборки бесплатных открыток, рамок и клипартов к различным праздникам:
В нашем примере будем использовать вот эту картинку.
2. Редактируем шаблон
Распаковываем архив, открываем файл christmas-greeting-card.psd в Photoshop, заменяем «Merry Christmas» на традиционное русское поздравление и удаляем лишний текст:
Сохраняем шаблон и кладем его в корень папки текущего пользователя:
3. Выбираем место для надписи
Теперь прикинем, куда будем печатать имя человека. Выбираем указателем мыши нужную точку и зафиксируем ее координаты. Они отображаются на панели, которая включается с помощью пункта меню Windows -> Info:
Значения X и Y надо куда-нибудь записать. Эти цифры нам скоро пригодятся.
4. Создаем список адресатов
Сделаем в Excel/Numbers/Google Spreadsheets вот такую таблицу:
В первый столбец запишем порядковые номера адресатов, а во второй обращения к ним.
В первую ячейку третьего столбца записываем вот такую формулу и протягиваем ее по всей высоте столбца:
=”contactName[“&A1&”]='”&B1&”‘;”
5. Готовим папку для открыток
В корневой папка текущего пользователя создаем папку с именем cards. В нее будут сохраняться готовые открытки.
6. Код
Расслабляемся, глубоко вдыхаем и делаем как написано. Просто копируем один за одним кусочки кода и вносим изменения в соответствии с комментариями.
По умолчанию, в Photoshop нет собственного редактора скриптов, поэтому открываем текстовый редактор (Notepad, Notepad ++, Sublime) и вставляем в него следующий код:
[jscript]
var originalUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
var contactName = new Array();
[/jscript]
Теперь копируем в буфер обмена содержимое третьего столбца таблицы из четвертого пункта инструкции:
[jscript]
contactName[1]=’Никита Горяинов’;
contactName[2]=’Артур Малосиев’;
contactName[3]=’Роман Юрьев’;
contactName[4]=’Юрий Андреев’;
contactName[5]=’Артем Суровцев’;
[/jscript]
Теперь еще кусочек кода:
[jscript]
for(i=1;i<=contactName.length-1;i++)
{
[/jscript]
А под ним вот эту строчку. Обратите внимание, что здесь нужно указать путь к файлу шаблона. Если вы работаете под Windows, то «~/christmas-greeting-card.psd» надо заменить на что-то похожее на «С:/Users/Irina/christmas-greeting-card.psd», только с вашим именем пользователя.
[jscript]
// Открываем файл шаблона
var fileRef = new File("~/christmas-greeting-card.psd");
[/jscript]
Еще кусочек:
[jscript]
var docRef = app.open (fileRef);
//Добавляем текст
var artLayerRef = docRef.artLayers.add();
artLayerRef.kind = LayerKind.TEXT;
var textItemRef = artLayerRef.textItem;
textItemRef.contents = contactName[i];
[/jscript]
В этой строке не забываем указать местоположение надписи на картинке, с которым мы определились в третьем пункте:
[jscript]
textItemRef.position = [145, 370];
[/jscript]
Добавляем код, который описывает формат текста надписи:
[jscript]
// Размер текста
textItemRef.size= 35;
var fontColor = new SolidColor;
// Цвет текста в формате hex
fontColor.rgb.hexValue = ‘cbff66’;
textItemRef.color = fontColor;
[/jscript]
Если вы используете операционную систему Windows, то «~/cards/» надо заменить на что-то похожее на «C:/Users/Irina/cards/»:
[jscript]
//Сохраняем файл в tiff
tiffFile = new File( "~/cards/"+contactName[i]+".tiff" );
tiffSaveOptions = new TiffSaveOptions();
tiffSaveOptions.embedColorProfile = true;
tiffSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
tiffSaveOptions.quality = 1;
app.activeDocument.saveAs(tiffFile, tiffSaveOptions, true, Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
[/jscript]
Сохраняем файл под именем textscript.js. Если вы используете Photoshop CS2, то расширение должно быть .jsx.
7. Запускаем скрипт
В Photoshop открываем пункт меню File -> Scripts -> Browse и выбираем файл textscript.js:
Ждем, когда мелькание окон закончится.
8. PROFIT!!!
Открываем папку cards и смотрим что получилось:
УРА!
Дополнительная информация
Можно не сохранять открытки в папку, а сразу печатать их с помощью метода print(). Для этого надо вот этот кусок кода:
[jscript]
tiffFile = new File( "~/cards/"+contactName[i]+".tiff" );
tiffSaveOptions = new TiffSaveOptions();
tiffSaveOptions.embedColorProfile = true;
tiffSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
tiffSaveOptions.quality = 1;
app.activeDocument.saveAs(tiffFile, tiffSaveOptions, true, Extension.LOWERCASE);
[/jscript]
Заменить вот на этот:
[jscript]
app.activeDocument.print();
[/jscript]
А еще можно сохранять файлы в других форматах. К примеру, в jpg. Для этого заменяем вышеупомянутый фрагмент на:
[jscript]
jpgFile = new File( "~/cards/"+contactName[i]+".jpg" );
jpgSaveOptions = new JpgSaveOptions();
jpgSaveOptions.embedColorProfile = true;
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
jpgSaveOptions.quality = 1;
app.activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE);
[/jscript]
Полную документацию по автоматизации Photoshop можно почитать коллекция полезных образцов кода, на основе которых можно написать что-то свое.
Для обучения основам JavaScript можно пройти какой-нибудь онлайн-курс, к примеру на CodeSchool. Эти знания помогут вам при написании автоматизаций не только для Photoshop, но и для других приложений.
Если планируется печать открыток на профессиональном типографском оборудовании, то лучше использовать Adobe InDesign. Кстати. Если вы в будущем решите использовать другие скрипты в приложениях Adobe, рекомендую установить расширение ExtendedScript Toolkit для Creative Cloud.
P.S. Photoshop также понимает скрипты на Visual Basic for Application или AppleScript. Я считаю, что не стоит тратить время на изучения этих языков и лучше сконцентрироваться на универсальном JavaScript. Два аргумента для тех, кто не согласен:
Для написания автоматизаций для MS Office не обязательно знать VBA, JavaScript API for Office и в будущем его возможности будут только расширяться.
А для написания автоматизаций для OS X уже не нужен AppleScript, ведь начиная с версии Yosemite, макросы под Mac тоже можно создавать на JavaScript.
13 комментариев
Форум →Как поступит обычная девушка офис-менеджер?
Она внимательно посмотрит, на полученный от босса шаблон, потом еще раз посмотрит, потом позовёт офис-менеджера 80 лвл, тот тоже посмотри и они оба зададут друг другу вопрос: А почему на ёлке укро звёздочка?
После этого они позвонят в местное управление ФСБ России: Нет босса – нет проблемы! – это один из секретов продвинутых офисных работников.
@totten, опередили :))
А если честно-заниматься таким рукоблудием-вообще не дело. Банальный Corel Draw все это делает элементарно и делает это уже очень давно
@arseniy, абсолютное большинство красивых открыток доступны в формате PSD, который Corel Draw не открывает. Расскажите, пожалуйста, подробнее, что Вы имеете ввиду?
@Ирина Чернова, как офис-менеджер 87 уровня :)) могу Вас заверить-Корел открывает PSD файлы, а также и подавляющее большинство других графических форматов, легко и непринужденно. А функция, которая делает персонифицированные изделия (в том числе и открытки) называется Print Merge
@arseniy, чето у меня не вышло открыть psd в Corel Draw( надо будет разобраться с этим вопросом. Про Print Merge почитала – замечательная вещь. Спасибо!
Но Corel Draw менее популярная программа, чем Photoshop + стоит в разы дороже (на него нет помесячной подписки) + возможности JS для Photoshop гораздо шире, чем Print Merge.
@Ирина Чернова, используйте функцию Импорт
Ну или закинуть в InDesign и сделать Data Merge.
Думаю менеджер не справится ни с одним из вариантов, набьет вручную)
150 фамилий минут 10 займет.
@strangesound, почитала инструкцию по использованию DataMerge в InDesign. Спасибо за наводку) На мой вкус скриптами все же чуть-чуть проще + больше возможностей для творчества.
@arseniy, а ведь автор права, Corel Draw, в отличие от Corel Photo-Paint, не умеет ни открывать, ни импортировать PSD-формат
@yurembo, импортирует https://ru.wikipedia.org/wiki/CorelDRAW#.D0.9F.D0.BE.D0.B4.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.B2.D0.B0.D0.B5.D0.BC.D1.8B.D0.B5_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.82.D1.8B_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2
Чуть позже скрин сделаю. Я этим занимаюсь ежедневно по несколько раз :)
@yurembo, ну да.
Забавно наблюдать за тредами “ой, программа А может это в один клик, а в программе Б надо 3 клика”. Не вспоминая, что программа Б в остальном обгоняет А на годы разработки функциональностей.
Я не использую все, но я могу в любой момент вспомнить или выучить, а не трахаться целый день.
Поделки под МС офис vs ванильный, и, к сожалению, лучше под Win.
Божечки перепись «дЕзайнеров» в комментах.
вы разницу между векторной и растровой графикой понимаете например? а то что корел и мак это даже не смешно?
@arseniy, ок, признаю свою ошибку, вот скриншот:
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Запрещаем Apple Music забивать всю память айфона
Как на iPhone сохранить любой файл из iCloud для просмотра офлайн
Как в iOS установить время по умолчанию для напоминаний на весь день
Какие жесты появились на iPad в iOS 12
Почему в Авиарежиме недоступны фото и видео на iPhone
Как сбросить AirPods до заводских настроек
Как узнать и скачать последнюю версию прошивки для старого iPhone и iPad
Как обменять свой MacBook на старшую модель?