Как создать PDF из настраиваемого HTML (шаблоны Django) так, чтобы это работало надежно?

Здравствуйте, уважаемые участники сообщества Хабра!

Мы уже месяц пытаемся решить проблему с созданием автоматического генератора красивых презентаций в формате PDF в админке сайта на Django. Нашей целью является создание инструмента, позволяющего пользователям в админке собирать презентации по шаблону с дизайном и генерировать PDF-файлы. Презентации должны содержать текст, цифры, даты, заголовки, а также специально оформленные слайды в начале и в конце. 

Мы ищем более стабильное решение для этой задачи, учитывая, что wkhtmltopdf + pdfkit не полностью удовлетворяют наши потребности из-за проблем с поддержкой всех необходимых CSS-свойств. Мы также отказались от использования библиотек pypdf и xhtml2pdf из-за ограничений стилей. 

С учетом вышеперечисленного, можете ли вы предложить более надежное решение с поддержкой CSS3 и HTML5 для создания презентаций в PDF? Наш стек технологий включает python3.9 и Django 3.

Будем признательны за любую помощь и советы по этому вопросу!
  • 23 декабря 2023 г. 7:47
Ответы на вопрос 2
Существует несколько альтернативных решений для создания 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
Похожие вопросы