Как реализовать печать форм документов из браузера?
Появилась задача реализовать печать документов. Сейчас имеем самописный генератор форм документов, который позволяет настроить набор полей документа, которые пользователь заполняет. После заполнения требуется выполнить печать документа, к печатной форме есть требования по внешнему виду (стили полей, шрифты, стили таблиц и тп). Пробуем задачу решать через генерацию отдельной страницы, на которой фронт получит все поля документа со значениями, отрисует все заголовки. Но столкнулись с проблемами:
- перенос между страницами: у таблиц нужно заголовки столбцов переносить
- нумерация страниц - отдельная сложная история, чтобы номер страницы был в конце каждой страницы в своем поле
Кажется, что выбранное решение получается слишком сложным, победить в общем виде, чтобы все корректно рассчитывалось под А4 с нужными полями не получается. Нумерация и таблицы - отдельная боль.
Может уже есть какие-то решения и подходы, которые позволят решить задачу проще. Раньше сталкивались с документами только в разрезе заполнения Excel таблицы нужными значениями, конвертами в pdf и отправкой на печать уже pdf. Но здесь форма документа произвольная, поэтому нельзя заранее на сервере продумать шаблон.
На баке используем golang, поэтому если есть варианты библиотек, то лучше под go.
Для принтера существует отдельный медиа запрос, в котором вы пишете все свои хотелки по форматированию листа под печать, в том числе колонтитулы, размер страницы, нумерацию, так же описываете элементы в стандартных единицах печати - cm/pt. Все весьма просто гуглится и на том же хабре вроде даже пару толковых статей было (тыцтыц).
Буквально тысячами разных способов - от генерации любым шаблонизатором или даже фронтендом html-стринцы, пригодной для печати, до генерации на бэкенде pdf'ки и отправки клиенту, никаких принципиальных проблем с её формированием из произвольной формы нет.