Задача - программа сборки. На входе товарная база с разделами, характеристиками и фотографиями карточек, на выходе PDF, пригодный и для типографии, и для отправки письмом: титул, оглавление с номерами страниц, колонтитулы, сетка карточек на развороте, один шаблон страницы на весь выпуск. Изданий нужно два. Первое - полный каталог с изображениями. Второе - короткий прайс без картинок, простыми таблицами, чтобы снабженец распечатал его и работал карандашом. И третья ветка, ради которой всё и затевается, - персональные выпуски под конкретного покупателя: его цены вместо базовых и его название в водяном знаке.
Собирать нужно и по кнопке, когда выпуск понадобился срочно, и ночью по расписанию. Старые выпуски сохраняем, чтобы поднять любой из них и посмотреть, что и почём мы отправляли.
Оговорки, которые для нас важнее скорости:
— персональный выпуск с ценами одного покупателя не должен оказаться у другого: файл получает неугадываемое имя и выдаётся ссылкой с ограниченным сроком действия;
— фотографии подтягиваются из карточек товара, а позиция без фотографии остаётся в каталоге с пометкой, а не исчезает из него незаметно;
— цены берутся и замораживаются на дату сборки, и дата печатается на каждой странице.