SmartDocGen: Автоматизация работы с Excel и Word > Полезное > Фото и подписи в документах: как вставлять картинки автоматически

Фото и подписи в документах: как вставлять картинки автоматически

Подставить в документ текст умеют все инструменты. Подставить картинку — почти никто: Excel не хранит изображения в ячейках так, чтобы их можно было забрать, а Word тянет их только через поля с недружелюбным синтаксисом.

Между тем задач ровно три, и они массовые: фотография на удостоверение, подпись руководителя в договор, печать организации на справку. Разберём, как это устроено технически — от связывания картинки со строкой таблицы до случая, когда бланк вообще не документ Word, а изображение из типографии.

Почему с картинками сложнее, чем с текстом

Текст в ячейке — это значение. Программа взяла строку, подставила, готово. Картинка в ячейке — это либо объект, «плавающий» над таблицей и не привязанный к конкретной строке, либо вообще отдельный файл на диске.

Поэтому все рабочие подходы устроены одинаково: в таблице хранится не картинка, а имя файла. Сами файлы лежат в папке, и связь между строкой и изображением — это текстовое значение в ячейке.

Отсюда сразу три следствия, которые определяют всю дальнейшую работу:

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

В штатном слиянии Word для этого есть поле INCLUDEPICTURE, и работает оно тяжело: фигурные скобки набираются только сочетанием клавиш, обратные слэши в путях приходится удваивать, а после слияния во всех документах нередко оказывается одна и та же картинка из первой записи. Дальше речь пойдёт о более прямом способе.

Связываем картинку со строкой

Схема состоит из трёх частей и настраивается один раз.

1. Колонка в таблице. Заводится колонка со специальным именем — оно должно начинаться с IMG:. Например, IMG:Фото, IMG:Подпись, IMG:Печать. В ячейках пишутся имена файлов: ivanov.jpg, petrova.png.

2. Файлы картинок. Кладутся в ту же папку, где лежат шаблоны. Можно разложить по подпапкам — тогда в ячейке указывается путь относительно папки шаблонов.

3. Метка в шаблоне. В том месте документа, где должно появиться изображение, ставится {{IMG:Фото}} — ровно с тем же именем, что у колонки.

При обработке программа берёт из ячейки имя файла, находит его в папке и вставляет картинку в документ на место метки.

Пара практических мелочей, которые экономят время при заполнении таблицы:

  • Расширение можно не писать. Если в ячейке указано просто ivanov, программа сама переберёт распространённые форматы и найдёт ivanov.jpg или ivanov.png. Удобно, когда фотографии приходят в разных форматах от разных людей.
  • Пустая ячейка — не ошибка. Если фотографии для этой строки нет, метка просто исчезнет, документ сформируется без картинки. Не придётся заводить отдельный шаблон для тех, у кого фото не принесли.
  • Поддерживаются обычные форматы: PNG, JPG, JPEG, JFIF, BMP, GIF, TIFF, WEBP, ICO. Ограничение на размер файла — 20 МБ, что для фотографии на документ более чем достаточно.

Размер картинки задаётся прямо в метке

Это ключевой момент, потому что фотографии обычно приходят разного размера: одна с телефона на 4000 пикселей по длинной стороне, другая — скан 600×800.

Размер указывается внутри метки, в миллиметрах:

МеткаЧто делает
{{IMG:Фото-w:30}}ширина 30 мм, высота подберётся сама
{{IMG:Фото-h:40}}высота 40 мм, ширина подберётся сама
{{IMG:Фото-w:30-h:40}}жёстко 30×40 мм
{{IMG:Фото}}исходный размер картинки

Полные варианты записи тоже работают: -width: и -height: вместо коротких.

Указывайте только одну сторону. Тогда пропорции сохраняются и лица на фотографиях не растягиваются. Жёсткие 30×40 имеет смысл ставить только если вы уверены, что все исходники уже приведены к этому соотношению.

Для фотографии на удостоверение стандарт — 30×40 мм, поэтому обычно пишут -w:30 и заранее кадрируют исходники в пропорции 3:4. Для подписи в договоре хватает -w:40, для печати — -w:35.

Отдельно: если метка стоит внутри ячейки таблицы, программа дополнительно вписывает картинку в ширину этой ячейки, даже если вы задали больше. Это защита от разъезжающейся вёрстки.

Фотографии с телефона: поворот и вес

Две проблемы, с которыми сталкивается любой, кто собирал фотографии от людей.

Перевёрнутые снимки. Телефон пишет ориентацию не в саму картинку, а в служебные данные EXIF. Многие программы это поле игнорируют, и портрет ложится на бок. Здесь поворот применяется автоматически: фотография встанет так, как её видел человек на экране телефона.

Вес. Снимок с современного телефона — это 3–8 МБ. Двести таких фотографий в документах превратятся в неподъёмные файлы. При вставке изображение пересохраняется с оптимизацией: JPEG — с качеством 90, PNG — со сжатием без потерь. Визуально разницы нет, размер итоговых документов заметно меньше.

Но если фотографии приходят прямо с камеры, лучше уменьшить их заранее — до 800–1200 пикселей по длинной стороне. Для печати 30×40 мм этого с запасом хватает, а обработка пойдёт быстрее.

Подписи и печати: главное — прозрачность

Здесь есть одна ошибка, которую совершают почти все, и она видна сразу.

Подпись сканируют на белом листе и сохраняют как JPEG. Формат JPEG прозрачность не поддерживает — вокруг подписи остаётся белый прямоугольник. Вставленная в документ, такая подпись закрывает собой линию для подписи, часть фамилии и всё, что оказалось под ней.

Правильно так: отсканировать подпись, убрать фон в любом графическом редакторе и сохранить в PNG с прозрачным фоном. Тогда подпись ляжет поверх линии, как настоящая.

То же самое с печатью. Синяя печать на белом квадрате поверх текста выглядит грубой подделкой; печать с прозрачным фоном — естественно.

Практический порядок для подписи:

  1. Расписаться чёрной или синей ручкой на чистом белом листе, покрупнее.
  2. Отсканировать при 300 dpi или сфотографировать при ровном свете.
  3. В редакторе поднять контраст, чтобы фон стал чисто белым, а линия — плотной.
  4. Удалить белый фон и сохранить как PNG.
  5. Проверить на тёмном фоне, что вокруг подписи нет белой каймы.

Про юридическую сторону стоит сказать прямо: вставленное изображение подписи — это не электронная подпись и не заменяет собственноручную. Для внутренних документов и черновиков это удобно, для документов, имеющих юридические последствия, вопрос решается отдельно и не средствами генератора.

Когда бланк — картинка, а не документ Word

Отдельный класс задач, который через Word не решается вообще. Типографский диплом с рамкой, сертификат с гильошем, бейдж, наградной лист — всё это существует как изображение. Вписать в него данные средствами Word невозможно: нет способа работать с картинкой как с холстом.

Решение устроено иначе. Рядом с файлом-макетом кладётся файл разметки с тем же именем и расширением .json: Диплом.png и Диплом.json. В разметке описано, что и в какой точке печатать.

Выглядит она так:

{
  "ФИО": {
    "x": 600, "y": 420,
    "font": "Times New Roman", "style": "bold",
    "size": 48, "color": "#1a1a1a",
    "align": "center", "max_width": 900
  },
  "Программа": {
    "x": 600, "y": 520,
    "font": "Times New Roman",
    "size": 28, "color": "#333333",
    "align": "center", "max_width": 1000
  },
  "Номер": {
    "x": 1180, "y": 980,
    "font": "Arial", "size": 18, "color": "#666666",
    "align": "right"
  }
}

Ключ верхнего уровня — это имя колонки в таблице. Всё остальное — параметры печати:

ПараметрСмыслПо умолчанию
x, yкоординаты в пикселях от левого верхнего угла макета0, 0
fontназвание семейства шрифтаarial
styleregular, bold, italicregular
sizeразмер шрифта в пикселях24
colorцвет в формате #RRGGBB#000000
alignleft, center, right — относительно точки xleft
max_widthширина области в пикселях; включает перенос длинных строкнет
font_pathпуть к конкретному файлу шрифтанет
pseudo_boldискусственная жирность, если у шрифта нет начертания boldfalse

Здесь есть неочевидная деталь, на которой легко потерять полчаса. Когда задан max_width, точка x считается центром области, а не её левым краем: область раскладывается симметрично относительно этой точки. Без max_width значение x — это привычная точка привязки, а align определяет, в какую сторону от неё растёт текст.

Практический порядок разметки: откройте макет в любом редакторе, наведите курсор на нужное место и посмотрите координаты в пикселях. Для строк по центру бланка укажите x равным половине ширины макета, align: center и max_width чуть меньше ширины рамки — тогда длинное ФИО перенесётся, а не уползёт за край.

Про шрифты: указывается семейство, файл ищется среди установленных в системе. Если такого шрифта нет, подставится ближайший из надёжных кириллических — Arial, Calibri, Times New Roman, Tahoma. Чтобы гарантировать вид, можно положить файл шрифта рядом с макетом и указать его в font_path.

Что ломается и как это выглядит

Хорошая новость: ошибки с картинками не молчаливые. Вместо изображения в документ попадает пометка, по которой сразу понятно, что произошло.

[IMG ERROR: FILE NOT FOUND] — файла с таким именем нет в папке шаблонов. Проверьте: опечатку в ячейке, лишний пробел в конце значения, регистр расширения, лежит ли файл в подпапке, которая не указана в значении.

[IMG TOO LARGE] — файл больше 20 МБ. Обычно это скан в TIFF без сжатия. Пересохраните в JPEG.

Картинка вставилась, но огромная. В метке не задан размер. Добавьте -w: с нужной шириной.

Фотография растянута. Заданы обе стороны сразу, а исходник другого соотношения. Уберите одну.

Подпись закрывает текст белым прямоугольником. Файл в JPEG. Пересохраните в PNG без фона.

И отдельно про безопасность: в ячейке нельзя указать абсолютный путь вроде C:\Users\... или адрес в интернете — такие значения отклоняются. Картинки берутся только из папки шаблонов и её подпапок. Это ограничение намеренное: файл с данными от подрядчика не должен уметь дотянуться до произвольного места на диске.

Как проверить, что всё встало правильно

Прогоняйте не всю таблицу, а три строки — и подберите их специально:

  • строка с самой длинной фамилией и названием программы — видно, переносится текст или уползает за рамку;
  • строка, где фотографии нет — проверяете, что документ формируется без неё и не ломается;
  • строка с вертикальным снимком с телефона — проверяете поворот.

Откройте результат и посмотрите на три вещи: не осталось ли пометок [IMG…], не съехала ли вёрстка от длинных значений, и как выглядит подпись на фоне линии.

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

Коротко

Картинка в документ подставляется через связку «колонка с именем файла — папка с файлами — метка в шаблоне». Размер задаётся в самой метке в миллиметрах, и лучше указывать одну сторону, чтобы не искажать пропорции. Подписи и печати — только PNG с прозрачным фоном. Если бланк существует как изображение, к нему пишется файл разметки с координатами, шрифтами и выравниванием.

Всё описанное работает в SmartDocGen: и вставка в документы Word, и печать по макету-картинке. Как размечается сам шаблон Word и почему метки иногда «ломаются», разобрано в отдельной статье о подготовке шаблонов; устройство связки таблицы и шаблона — здесь.

Бесплатного демо-режима у программы нет: установщик скачивается свободно, но для запуска нужен код активации. Проверить на своих фотографиях и макетах дешевле всего по тарифу на месяц — 399 ₽.

Посмотрите, как SmartDocGen работает на практике

В статье мы разобрали поставленную задачу. А здесь вы можете увидеть реальный пример: за несколько секунд программа превращает Excel-таблицу в десятки готовых документов:
03:51
В видео вы увидите, как SmartDocGen:
  • Создаёт сотни документов меньше чем за минуту
  • Сохраняет все шрифты, стили и форматирование
  • Одинаково хорошо работает с Excel и Word-шаблонами
Пошагово процесс выглядит так:
  • Загружается Excel-файл или таблица Word с данными
  • Указывается папка с шаблонами Word и изображениями
  • Задаётся папка для сохранения готовых документов
  • Запускается автоматическая обработка
Готовые файлы формируются мгновенно и сохраняют нужное оформление, структуру и имена.
Хочу так же — купить за 399₽/месяц
Установка 2 минуты. Возврат 100% в течение 14 дней
Просто нажмите и получите результат
Всего 4 кнопки — и документы формируются автоматически, с нужным оформлением и названиями.
Получить сейчас

Автоматизируйте документы по лучшей цене

Выберите подходящий срок лицензии — функционал во всех тарифах одинаково полный: массовая обработка Excel и Word, сохранение форматирования, поддержка и обновления.
Тариф "На 1 год"
Период действия: 12 месяцев
2990₽
Выгода 38% (экономия 1798₽)
Полный функционал программы:
  • Массовая обработка Excel → Word и Excel → PNG/JPEG
  • Неограниченное кол-во документов и изображений
  • Техподдержка + обновления (12 мес.)
Приобрести
⭐⭐⭐
Работает на:
Тариф "На 3 месяца"
Период действия: 3 месяца
990₽
Выгода 17% (экономия 207₽)
Полный функционал программы:
  • Массовая обработка Excel → Word и Excel → PNG/JPEG
  • Неограниченное кол-во документов и изображений
  • Техподдержка + обновления (3 мес.)
Приобрести
ХИТ
Работает на:
Тариф "На 1 месяц"
Период действия: 1 месяц
399₽
Полный функционал программы:
  • Массовая обработка Excel → Word и Excel → PNG/JPEG
  • Неограниченное кол-во документов и изображений
  • Техподдержка + обновления (1 мес.)
Приобрести
Работает на:
РобокассаЮ КассаТ Банк
Хотите узнать больше о возможностях SmartDocGen?
Хотите узнать больше о возможностях SmartDocGen?Перейдите на главную страницу и убедитесь сами.
Перейти на главную