PDF по шаблону: pdfme собирает КП, счета и акты из данных CRM
pdfme это открытая библиотека (MIT), которая собирает PDF по шаблону в JSON и данным. Разбираю, какие поля умеет, как подключить шрифт с кириллицей, как выглядит поток от заявки в CRM до PDF клиенту и что проверить бухгалтеру.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Автоматизация бизнеса: КП, счета и акты из CRMОдин и тот же файл в десятый раз
Менеджер открывает прошлое КП, меняет название клиента, правит таблицу, забывает обновить дату и сохраняет в PDF. Через месяц выясняется, что в одном файле реквизиты старые, а в другом новые. О похожей сборке документов уже есть разборы: генератор договоров и КП и md2pdf и EdenText. Здесь конкретный инструмент для подхода «шаблон плюс данные».
Я проверил репозиторий pdfme/pdfme. Лицензия MIT по файлу LICENSE.md, автор HandDot, репозиторий создан в августе 2021 года и не архивирован. На 15 октября 2026 года в нём 4889 звёзд и 37 открытых обращений. Последний коммит от 14 октября 2026, в тот же день вышла версия 6.2.5. До неё релизы шли 6 октября, 5 октября, 30 и 26 сентября, проект живой. Пакеты в npm тоже под MIT: generator, ui, schemas, common. В репозитории есть ещё cli, converter, jsx и manipulator.
Подтверждено по документации на pdfme.com: генерация идёт и в браузере, и в Node.js (нужна версия 16 или новее), шаблоны это JSON, визуальный Designer подключается как отдельный пакет.
Какие поля умеет и что с кириллицей
По списку возможностей есть текст, текст с несколькими переменными, изображения (JPEG, PNG, вставка другого PDF), SVG, таблицы, списки, даты, галочки и выпадающие списки. Штрихкоды: QR, EAN-13, Code 128, PDF417, Data Matrix и другие. Для этикеток хватает.
Таблица умеет автоматический перенос на следующую страницу, если подложка задана размерами листа. Колонтитулы с номером страницы делаются через слой, который повторяется на каждой странице: в тексте пишется «Страница {currentPage} из {totalPages}». Есть выражения, например подсчёт итога по строкам таблицы прямо в шаблоне. Разрешены стрелочные функции и стандартные объекты вроде Math и Date, eval запрещён.
Теперь шрифты, для русских документов это главный вопрос. Документация говорит, что по умолчанию используется Roboto Regular, а символы, которых в нём нет, превращаются в пустые квадраты. Про кириллицу там прямо не написано. Поэтому я декодировал встроенный в исходники шрифт и посмотрел таблицу символов: русские буквы, ё, знак рубля, номер, кавычки-ёлочки в нём есть. Это моя проверка исходного кода, не заявление авторов.
Свой шрифт подключается объектом: для каждого имени указывается файл TTF или OTF (ссылка, Uint8Array или ArrayBuffer), у одного из шрифтов ставится признак запасного. В поле шаблона выбирается нужное имя. Жирный и курсив заводятся отдельными файлами, у Roboto Regular жирного начертания нет. Если указать ссылку на http-адрес, шрифт скачивается при запуске, поэтому для закрытого контура кладите файл на свой сервер.
Поток: заявка в CRM, бот, PDF клиенту
Схема, которую я бы собирал. Менеджер в CRM переводит сделку в статус «выставить КП». Бот или скрипт на вашем сервере забирает карточку, превращает её в JSON, передаёт библиотеке вместе с шаблоном. PDF готов через секунду, уходит клиенту в Telegram, MAX или на почту, копия остаётся в карточке.
Данные для одного КП выглядят так:
{
"number": "КП-2026-0142",
"date": "15.10.2026",
"client": "ООО «Ромашка»",
"items": [["Монтаж ворот", "1", "84 000"]]
}
В шаблоне лежит то, что не меняется: макет, логотип, ваши реквизиты, шрифты, подписи колонок, условия оплаты, колонтитул. В данных лежит то, что меняется: номер, дата, клиент, позиции, суммы, срок действия. Номер выдаёт CRM или ваш скрипт, у библиотеки это просто значение поля. Сумма прописью в списке возможностей не нашлась, её считают в коде до генерации.
Условный пример экономии. Допущения: 20 КП в неделю, 15 минут на ручную сборку и вычитку каждого, при шаблоне 3 минуты на проверку готового файла. Было 5 часов в неделю, стало 1 час, разница 4 часа в неделю, около 16 в месяц. Замерьте десять своих последних документов.
Как подготовить шаблон КП
- Поля. Выпишите всё, что меняется: клиент, ИНН, номер, дата, позиции, итог, срок действия. Остальное зашивается в макет.
- Шрифты. Файл с кириллицей, отдельный для жирного, хранится у вас. Проверьте ё, ₽, №, «ёлочки» и неразрывные пробелы в цифрах.
- Логотип. PNG, JPEG или SVG в хорошем размере.
- Реквизиты. Ваши данные вносятся один раз и сверяются бухгалтером.
- Нумерация. Номера выдаёт CRM, чтобы не было двух документов с одним номером.
- Испытания. Прогоните три позиции, шестьдесят позиций, длинное название клиента и пустое поле.
Где это не сработает
pdfme это библиотека. Менеджеру в ней нечего нажимать, поток из CRM и бота пишет разработчик. Редактор шаблонов встраивается в ваше веб-приложение.
Если подложкой служит готовый PDF, поля остаются на местах: перенос таблицы на новые страницы и растущий текст работают только с пустым листом заданного размера. Гиперссылки на странице планируются, но ещё не сделаны. Электронной подписи в списке возможностей нет. Длинный договор с переменной структурой пунктов, на мой взгляд, проще вести отдельными шаблонами на каждый вариант или собирать другим инструментом, например через Stirling-PDF для склейки готовых частей.
Локальность. В описании нет упоминаний о том, что данные уходят наружу, библиотека работает у вас на сервере. Сетевой трафик я не анализировал, прогоните сборку с отключённой сетью. В онлайн-песочницу вставляйте только выдуманные данные.
Юридическая оговорка. Счёт, акт и договор требуют проверки реквизитов и обязательных полей бухгалтером или юристом. Библиотека рисует документ, правильность содержания за вами. Электронная подпись и ЭДО это отдельный вопрос со своими операторами и правилами, я здесь не утверждаю, как они устроены.
Что можно сделать уже сейчас
Откройте песочницу и соберите пробный документ из выдуманных данных.
Возьмите своё лучшее КП и разметьте его: что зашито в макет, что приходит из данных. Если полей меньше пятнадцати, это хороший первый кандидат.
Положите шрифт с кириллицей на свой сервер и прогоните тест со строкой «Счёт № 12 на 84 000 ₽, ёжик».
Поручите сборку потока специалисту: разворачивание, шаблоны с вашими реквизитами и связь с CRM я делаю в рамках автоматизации бизнеса. Примерные цены смотрите в прайсе, а смежный сценарий закрывающих документов разобран в статье про автогенерацию актов.
Частые вопросы
Нужен ли программист?
Для интеграции с CRM да. Шаблон в редакторе рисует любой человек без кода, но вызов генерации и передача данных пишутся скриптом.
Можно ли использовать pdfme в коммерческом проекте?
Лицензия MIT разрешает коммерческое использование, текст лицензии нужно сохранить. Договорные тонкости уточняйте у юриста.
Чем это отличается от Word-шаблона?
Word-шаблон правят руками и сохраняют в PDF. Здесь макет неподвижен, PDF собирается кодом из данных, поэтому все документы одинаковые.
Коротко о главном
pdfme подходит для документов со стабильным макетом и меняющимися данными: КП, счета, акты, сертификаты, этикетки. Лицензия MIT, релизы свежие, кириллица и свои шрифты поддерживаются. Нужен разработчик, электронной подписи нет.
Хотите КП и акты, которые собираются сами из вашей CRM, на вашем сервере? Напишите мне в Telegram кодовое слово «БЛАНК», подскажу, какой набор документов автоматизировать первым.
Ещё open-source для бизнеса
Эта статья — часть каталога бесплатных решений, которые я разворачиваю на вашем сервере под ключ: CRM, аналитика, документы, почта, безопасность, магазины, AI.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


