Найти тему

Генерация pdf-документа с помощью weasyprint

Сайт создателя этой библиотеки: https://weasyprint.org/

Заставка на сайте разработчика
Заставка на сайте разработчика
  1. Инсталляция

У меня 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
и посмотреть на результат

-3