О клиенте
Клиент готовил транзакционные документы для крупных компаний: счета, квитанции, краткие выписки, сводные отчеты и документы с разной структурой данных.
Для бизнеса были важны скорость, предсказуемость и качество верстки. Большие партии документов нужно было готовить в сжатые сроки, соблюдать SLA и не допускать ошибок в данных, шаблонах и итоговых PDF-файлах.
Клиент искал решение на базе Adobe InDesign Server, которое позволило бы ежедневно формировать большие объемы счетов, квитанций и выписок объемом от 1 до 10 страниц без ручного вмешательства и потери качества.
Задача
Массовая подготовка счетов и выписок сложнее разовой верстки: система должна быстро подставлять данные, формировать PDF и выдерживать постоянную нагрузку. Здесь важно не только корректно подставить данные в шаблон, но и быстро обработать большой поток однотипных документов без сбоев и потери качества.
Основные задачи проекта:
- готовить до 1 млн транзакционных документов в день;
- обрабатывать документы объемом от 1 до 10 страниц;
- сохранять одинаковую верстку и брендовый стиль во всех счетах, квитанциях и выписках;
- поддерживать длительную работу Adobe InDesign Server без утечек памяти и падения скорости;
- распределять задачи между несколькими серверными узлами Adobe InDesign Server;
- справляться с резким ростом числа задач в очереди;
- заранее рассчитывать время подготовки больших партий документов.
Краткий обзор проекта
Мы разработали платформу для массовой подготовки транзакционных документов на Adobe InDesign Server.
Когда в систему поступала партия счетов, квитанций или выписок, RabbitMQ распределял задачи между свободными серверными узлами Adobe InDesign Server. За счет этого документы формировались параллельно, а платформа не зависела от одного узла обработки.
Чтобы ускорить формирование документов, команда СКЭНД разработала C++-плагины на базе InDesign SDK и оптимизировала .NET-бэкенд. Это позволило быстрее работать с шаблонами, объектами InDesign и большими партиями однотипных документов.
Платформа была рассчитана на непрерывную работу: задачи ставились в очередь, документы формировались партиями, а готовые PDF сохранялись в AWS S3.
Решение
Платформа стала внутренним сервисом для массового формирования счетов, квитанций, выписок и других PDF-документов на Adobe InDesign Server.
Система принимала входные данные, подставляла их в шаблоны Adobe InDesign, запускала формирование документов через Adobe InDesign Server и сохраняла готовые PDF-файлы. Такой подход подходил для счетов, квитанций, выписок, сводных отчетов и других документов, где важны точная подстановка данных, единое фирменное оформление и высокая скорость подготовки.
RabbitMQ распределял задачи между несколькими узлами Adobe InDesign Server, чтобы платформа могла обрабатывать пиковые нагрузки без остановки. C++-плагины ускоряли работу с шаблонами и объектами InDesign, а .NET-бэкенд управлял задачами, сборкой документов и сохранением результатов.
Ключевые возможности
- массовая подготовка счетов, квитанций, выписок и отчетов;
- обработка до 1 млн транзакционных документов в день;
- работа с документами объемом от 1 до 10 страниц;
- автоматическая подстановка данных в шаблоны Adobe InDesign;
- формирование PDF-файлов для печати и электронной отправки;
- распределение задач через RabbitMQ;
- параллельная работа нескольких экземпляров Adobe InDesign Server;
- ускорение операций InDesign через C++-плагины;
- .NET-бэкенд для управления задачами, сборки документов и сохранения результатов;
- хранение готовых PDF-файлов в AWS S3;
- стабильная работа платформы при длительной высокой нагрузке.
Технологический стек
- Бэкенд: .NET-сервисы для управления задачами и интеграции с Adobe InDesign Server
- Плагины: C++-плагины на базе InDesign SDK
- Обработка задач: RabbitMQ
- База данных: Microsoft SQL Server
- Инфраструктура: AWS, Terraform, CI/CD
- Хранение документов: AWS S3
Результаты
Клиент получил платформу, которая ежедневно готовит большие объемы счетов, квитанций, выписок и других транзакционных PDF-документов без ручной обработки.
Команда СКЭНД ускорила работу Adobe InDesign Server за счет C++-плагинов, оптимизации .NET-бэкенда и параллельной работы нескольких серверных узлов Adobe InDesign Server. Это помогло сократить время формирования крупных партий документов и стабильно укладываться в согласованные SLA.
В результате клиент получил:
- подготовку более 1 млн транзакционных документов в день;
- стабильную обработку документов объемом от 1 до 10 страниц;
- рост скорости формирования PDF на 35-50% по сравнению с базовой конфигурацией Adobe InDesign Server;
- стабильную работу платформы на уровне 99,9% при длительной высокой нагрузке;
- сокращение времени подготовки крупных партий документов с 4-6 часов до 60-90 минут;
- подготовку больших партий счетов, квитанций и выписок без срывов SLA.