Здравствуйте, уважаемые участники сообщества Хабра! Мы уже месяц пытаемся решить проблему с созданием автоматического генератора красивых презентаций в формате PDF в админке сайта на Django. Нашей целью является создание инструмента, позволяющего пользователям в админке собирать презентации по шаблону с дизайном и генерировать PDF-файлы. Презентации должны содержать текст, цифры, даты, заголовки, а также специально оформленные слайды в начале и в конце. Мы ищем более стабильное решение для этой задачи, учитывая, что wkhtmltopdf + pdfkit не полностью удовлетворяют наши потребности из-за проблем с поддержкой всех необходимых CSS-свойств. Мы также отказались от использования библиотек pypdf и xhtml2pdf из-за ограничений стилей. С учетом вышеперечисленного, можете ли вы предложить более надежное решение с поддержкой CSS3 и HTML5 для создания презентаций в PDF? Наш стек технологий включает python3.9 и Django 3. Будем признательны за любую помощь и советы по этому вопросу!
Существует несколько альтернативных решений для создания PDF из настраиваемого HTML с поддержкой CSS3 и HTML5. Вот некоторые из них: 1. WeasyPrint: WeasyPrint - это Python-библиотека, которая может генерировать PDF из HTML и CSS. Она хорошо поддерживает CSS3 и HTML5 и может использоваться в Django-проекте. У нее есть удобное API для создания PDF из HTML-шаблонов Django. 2. xtopdf: xtopdf - это инструмент для создания PDF на основе шаблонов HTML или XML. Он имеет поддержку CSS3 и HTML5 и может быть интегрирован в Django-проект. Он использует стилевые таблицы CSS для форматирования содержимого PDF. 3. ReportLab: ReportLab - это библиотека Python для создания PDF-документов. Она не использует HTML и CSS, но предоставляет мощные инструменты для создания настраиваемых PDF-документов в коде Python. Она предоставляет высокоуровневый API для создания разметки, добавления текста, изображений и других элементов на страницы PDF. 4. PDFCrowd: PDFCrowd предоставляет API для создания PDF из HTML и CSS. Она может быть использована в Django-проекте для создания PDF-презентаций. PDFCrowd имеет достаточно большой набор функций CSS, включая поддержку языка разметки Markdown. Они предоставляют простой клиентский Python-интерфейс для его использования в проекте Django. Выбор наиболее подходящего решения зависит от ваших предпочтений и требований проекта. Рекомендуется протестировать каждое решение и выбрать то, которое лучше всего соответствует вашим потребностям по поддержке CSS3 и HTML5.
Генерация pdf боль, а нормального конверта из html вообще не видел, в итоге проще всего оказалось сделать генерацию через pdfmake на js, по факту потребуется переделать свои шаблоны в описание на json, а от "Сложные css-стили" скорее придется отказаться. Либо отрисовывайте на более низком уровне тем же ReportLab