Сайт создателя этой библиотеки: https://weasyprint.org/
- Инсталляция
У меня MacOs. Разработчик рекомендует инсталлировать с помощью brew. Так и поступим
brew install weasyprint
идет долго (видимо большая библиотека))) - можете сходить сварить кофе ☕️
2. пробуем написать шаблон. И выясняется следующее:
Не поддерживаются стили для рендеринга
WARNING: Ignored `font-display: swap` at 5:3, descriptor not supported.
WARNING: Ignored `text-rendering: optimizeLegibility` at 12:3, unknown property.
Ну, в общем-то, не особо и нужно. Они используются для оптимизации рендеринга на экране и для pdf не нужны. Удаляем и больше не используем.
Для справки:
Дескриптор font-display определяет, как отображается начертание шрифта, в зависимости от того, загружен ли он и готов к использованию, и если да, то когда. swap дает шрифту чрезвычайно малый период блока и бесконечный период замены.
Свойство text-renderingCSS предоставляет механизму рендеринга информацию о том, что следует оптимизировать при рендеринге текста. Одним из очень заметных эффектов является optimizeLegibility, который включает лигатуры (ff, fi, fl и т. д.) в тексте размером менее 20 пикселей для некоторых шрифтов (например, Microsoft Calibri , Candara , Constantia и Corbel или семейство шрифтов DejaVu ).
WARNING: Ignored `row-gap: 2px` at 29:3, unknown property. А это уже не приятно. gap нельзя применить никак. Даже для флексов. Обидно. Деваться некуда - используем padding & margin.
WARNING: Ignored `display: grid` at 69:3, invalid value. А это самое плохое. Гриды использовать нельзя. Вы пробовали делать таблицу на флексах? То еще себе удовольствие.
3. Вот что получилось в итоге: https://github.com/SeverInvest/template_html_for_pdf
4. Не забываем оформлять все переменные, используемые в документе, через {{}} двойные фигурные скобки - на сервере (который на python) они будут заменены на данные из таблиц.
5. В терминале можно запустить короткую команду
weasyprint act.html act.pdf
и посмотреть на результат