Блог

Data Merge в inDesign

  • Цветков Максим
  • 02.01.2013

Как и любой представитель человечества, я стараюсь как можно меньше времени тратить на рутинную работу и как можно больше думать головой. В моём случае под механической работой подразумевается верстка каталогов, визиток, буклетов, ценников, сертификатов и прочей шаблонной полиграфии. Обычно вышеперечисленные форматы имеют готовый дизайн, и нужно просто изменить текст/картинки. В inDesign есть для этого замечательная функция Data Merge. Освоим её, выполнив упражнения по вёрстке большого количества простеньких визиток.


Общий процесс:

1. Создаете источник базы в экселе или другом редакторе.
2. Сохраняете файл в Юникоде *.txt, вариант с tab-delimited.
3. В Индизайне создаете универсальный макет.
4. Загружаете текстовой файл с данными через Select Data Source. Настраиваете красивости.
5. Экспортируете в pdf из меню Data Merge. Получаете многостраничный PDF.

Создадим простой шаблон визитки в InDesign с тремя текстовыми фреймами и одним фреймом для картинки: имя, должность, телефон, для картинки рисуем пустой блок с помощью инструмента «Rectangle Frame Tool».


Далее переходим в Excel, создаём очень простенькую таблицу с данными. Пока что сами, в дальнейшем это за вас должен будет делать либо клиент, либо это будет экспорт из базы данных.

Обратите внимание: нельзя использовать символ «запятая (,)». Для InDesign это будет означать разделитель. Такое поведение можно поменять в настройках ОС, но изменения затронут всю систему. Если вам нужна запятая, то замените запятую на любой другой символ (например, смайлик ☺), и после сборки файла произведите автозамену символа. В учебном примере я использую самый простой и надежный способ, экспортирую файл с табуляцией в качестве разделителя (.txt) в UTF-8.

В таблице не должно быть пустых строк и столбцов. Для изображений необходимо указать полный путь до картинки, вида C:\Job\15\InDesign\Links\realFoot.jpg, и имя заголовка столбца для изображений должно начинаться с символа @. Excel может ругаться сообщением «неверная функция», нужно переустановить тип ячейки в текстовой тип: напишите символ  ‘ перед @, его не должно быть видно после окончания редактирования заголовка.

Если у вас проблемы с правильным путем до картинки, до убедитесь, что путь соответствует вашей операционной системе. Если изображения хранятся на сервере и получить правильный путь проблематично, есть простой способ скопировать правильный путь: закидываете в inDesign одну картинку из папки, в которой хранятся нужные изображения. Открываете панель Link , выбираете картинку, выполняете команду Copy Info -> Copy Platform Style Path. Теперь правильный путь с учетом платформы у вас в буфере обмена.

Внеся данные, сохраняем документ в формат «CSV (разделители—запятые)», закрываем эксель, открываем вновь созданный файл Блокнотом, т.к. дальнейшая работа ведется с .txt, у которого разделители—табуляция. На данном этапе уже можно заменить ваши символы, которые вы использовали вместо запятых, на полноценные запятые. Символ двоеточия (;) тоже необходимо заменить на запятые. Если inDesign отказывается работать с полученным файлом, и вы уверены, что в .csv нет специальных символов, то пересохраните файл без кодировки.

Из возможных проблем: у Excel по умолчанию кодировка файла CP1251, поэтому при итерациях редактирования файла надо задавать кодировку CP1251 и разделитель точку с запятой. Тогда .csv будет открываться корректно. Это также завязано на локализацию системы. Минимизировать потенциальные проблемы можно используя вместо Excel для просмотра .csv специализированный софт: CSVEdit, Sublime Text, Apache OpenOffice, TextEdit или Notepad. Часто помогает открыть .csv файл простым блокнотом и убедиться, что в конце строк нет лишних запятых.

Итак, все возможные проблемы учтены, сохраняем файл как обычный текстовой документ, кодировка файла unicode. Это стандарт, который содержит информацию о том, в каком месте таблицы символов расположен определенный символ. Иногда вам будут лгать, что кодировка должна быть ANSI, не слушайте. Вас пытаются ввести в заблуждение, InDesign не распознаёт русские символы в ANSI. Сверьте настройки сохранения с картинкой ниже:

Возвращаемся в InDesign: Windows -> Automation/utilities -> DataMerge.

При первой попытке работы с Data Merge нужно посмотреть настройки импорта. Для этого существует специальная галочка Show Import Options. Дело в том, что inDesign запомнит, что было импортировано и с какими настройками. Если вы решите использовать другие разделители или кодировки, эту галочку нужно поставить повторно и все перенастроить.
Настройки

Delimiter отвечает за разделитель. Если вы собираетесь импортировать .CSV, то выберите «Comma». В нашем случае выбран «Tab», т.к. импортируем .txt. Encoding это кодировка, выбор стоит между «ASCII» или «Unicode». При неправильно выбранной кодировке файл все равно будет импортирован без уведомления о проблемах, но часть символов будет распознана неправильно. Platform достаточно очевиден, «PC» или «Mac», в зависимости от системы, на которой вы работаете. Дополнительно есть возможность сохранить все пробелы, Preserve Spaces in Data Source, выберите эту опцию, если вам это нужно.

В появившемся окне выбираем пункт «Select Data Source…», и выбираем наш .txt файл. Файл с данными не должен быть открыт ни в каком другом софте. В окне DataMerge появятся заголовки, которые можно простым drag&drop перетащить на наши заранее созданные поля в визитке. Если всё пройдёт успешно, то заголовок поля на нашей визитке встанет в двойные угловые скобки, как на картинке ниже. Успешно подставленные данные отображаются между символами <<>> (если эти символы есть в шрифте). Что бы убедиться в правильности результата, нажмите в окне DataMegre кнопку preview, у вас должны появиться данные из таблицы на визитке.

Следующим шагом будет пункт Create Merged Document…». Откроется окно, в котором нужно поставить напротив пункта Records per Document Page значение «Multiple Record»,  это позволит сделать сразу несколько визиток на одной странице.

На второй вкладке расставляем отступы. Есть текст больше, чем заготовленное текстовое поле, то Data Megre вставит текст на следующую страницу по последовтаельности, выбранной нами. Есть возможность создать отчет об недостающих изображениях и указать правила позиционирования. Всего 5 вариантов размещения изображений:

  • Fit Images Proportionally – уместить изображение внутри Rectangle Frame с сохранением пропорций.
  • Fit Images to Frames – пропорции не сохраняются, изображение вставляется в ширину и высоту Rectangle Frame.
  • Fit Frames to Images – сохранение оригинального размера изображения с соответствующим подгоном размера фрейма.
  • Preserve Frame and Image Sizes – сохранение оригинального размера изображения, но не меняет размер фрейма.
  • Fill Frame Proportionally – пропорционально масштабирует изображение, пока не будет заполнен фрейм.

Я в большинстве случаев выбираю Fill Frame Proportionally, и не забываем отметить чекбокс Link images.

И, в общем то, всё, осталось нажать кнопку ОК и экспортировать результат в нужный формат. Для конференций часто требуется экспорт документов в раздельные файлы, с указанием имени файла, для этого отлично подходит скрипт Data Merge to unique names. Как вы понимаете, данный подход поможет вам сверстать не только визитки, но и любую другую полиграфическую продукцию. Ваш исходник не одноразовый, вы можете вносить изменения в файл данных Excel и обновлять их inDesign. Удачи!

14 комментариев

  1. Marker

    19.04.2013

    Вы меня cпасли) Хоть один человек написал про разделители-запятые… а то ни на форумах, ни в студии никто не мог мне подсказать, как запятые верно проставить.

  2. avariself

    13.04.2015

    Три года работала, не зная, что таким способом можно и картинки вставлять)))

  3. ausweis_on_the_sky

    23.04.2015

    мне нужно сделать нумерацию страниц только на одной половине страниц, как это сделать

    • your-scorpion

      23.04.2015

      1. В экселе сделайте нумерацию от 1 до 100.
      2. В inDesign, в мастере создаем пустой фрейм, переходим в keep options, выставляем in next frame. Сохраняем как номер и применяем к пустому фрейму.
      3. Заходим на первую страницу, которая должна нумероваться, ctrl+shift+click и вставляем нумерацию из экселя. Далее на вторую страницу идем и повторяем действие с shift, все произойдет автоматически.

  4. Yaroslav

    18.05.2015

    Спасибо за полезную инструкцию. А можно как то в иллюстраторе вставлять переменные данные из внешнего источника? При отправке макетов заказчику часто требуется заполнять сопроводительную таблицу. Было бы удобно автоматически вставлять туда данные к примеру из экселя.

    • your-scorpion

      19.05.2015

      Возможно, вам подойдет Variable в Illustator. Оно позволяет настраивать переменные данные для текста, изображений, диаграмм и параметров видимости. Я с помощью этой штуки готовил сотни баннеров буквально за 10 минут. Основной принцип работы в сохранении XMLки с переменными, заполнении XMLки и обратной загрузке готовых DataSet’ов. У меня есть мини-урок с описанием процесса работы.
      Создание переменных данных в Illustator

      Общий процесс такой: вы создаете один экземпляр макета, выделяете объект, который необходимо динамически изменять (!динамические изображения это картинки, которые вы поместили в документ через File=>Place (Файл=>Поместить) с включенным флажком Link (Связь), внедренные картинки не работают), и кликаете по кнопке Make Object Dynamic. Тем самым вы создаете cвязанную файловую переменную (Linked File variable), текстовую строковую переменную (Text String variable), или переменную графических данных (Graph Data variable), в зависимости от типа выбранного объекта.

      Далее нажмите на кнопку Capture data set в палитре Variables, чтобы зафиксировать данные переменных. Выбираете Save Variable Library из меню палитры Variables, и сохраняете XMLник, в который можно забить нужные данные и подгрузить обратно в illustrator. Экспортирование множества макетов с динамическими данными происходит с помощью пункта меню Batch панели Action.

      Еще можете посмотреть в сторону Adobe Scene7. Сам не пользовался, но наслышан). Либо PrintShop Mail.

  5. Радик

    09.12.2019

    На маке нужно пересохранить текстовый файл в UTF-16 для поддержки кириллицы.

  6. Дмитрий

    20.12.2019

    Здравствуйте!
    Такая задачка. Необходимо сделать пронумерованные карточки от 1 до 500 и расположить их на одном листе. Data Merge сделает такие карточки, но вот как их все одним махом на листе раскидать?

    • Цветков Максим

      20.12.2019

      Создаете одно текстовое поле, в окне Utilitities/Data Merge выбираете не Single, а Multiple Records, и в настройках раскладки указываете правила, по которым данные будут размещены на странице. Например, можно колонки сделать и к ним привязываться.

  7. Дмитрий

    24.12.2019

    Ого!!! Вот так просто, и никогда ведь не обращал внимания на это.
    Благодарю!!!!!!

  8. Аноним

    19.03.2020

    Добрый день, а как можно увеличить скорость. Вставляем с помощью DataMerge изображение. 1600шт вставляет 3минуты примерно. Можно ли как то ускорить

    • Цветков Максим

      20.03.2020

      Можно перекинуть файлы на более быстрый носитель (SSD). И разделить данные на несколько потоков (плагин DataLinker в помощь). SSD предварительно форматируем на 90%. У вас планируется активная работа с данными и диском, контроллер будет забирать себе пространство на замену изношенного. А от перегревов износ будет ой как быстр.

  9. Dasha

    06.10.2020

    Здраствуйте!
    Помогите пожалуйста! Нигде не могу найти информацию по данному вопросу.
    Есть данные из экселя для постройки графиков. Графиков очень много.
    Мне для верстки буклета нужно построить и вставить туда множество графиков. Как можно упростить работу?
    Верстаю я в индизайне, но если там это не реализовать, то может можно в иллюстраторе.
    Я делала это вручную, но теперь хотелось бы это как-то оптимизировать. Подтаскивать текстовые данные из экселя в индизайн у меня получается. А вот с графиками не знаю, что можно сделать. Графики обычные, не сложные.

  10. Бао

    03.12.2020

    Добрый день. Такая задача: есть эксель с товарами (описание, цены, прочее), нужно корректно хаверстать их по сетке в каталог. Цена, описание, размер скидки в разных боксах. Возможно такое применение скрипта?

Добавить комментарий для your-scorpion Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.