Для моего сайта, работающего на django, я ищу простое решение для преобразования динамических страниц html в pdf.
Страницы включают HTML и диаграммы из API визуализации Google (который основан на javascript, но включение этих графиков является обязательным).
Ответы:
Попробуйте решение от Reportlab .
Загрузите его и установите как обычно с помощью python setup.py install
Вам также потребуется установить следующие модули: xhtml2pdf, html5lib, pypdf с easy_install.
Вот пример использования:
Сначала определите эту функцию:
Тогда вы можете использовать это так:
Шаблон:
Надеюсь, поможет.
источник
cStringIO.StringIO
вio.StringIO
, мы должны определитьresult
asresult = io.BytesIO()
вместоresult = StringIO
.https://github.com/nigma/django-easy-pdf
Шаблон:
Посмотреть:
Если вы хотите использовать django-easy-pdf на Python 3, ознакомьтесь с предложенным здесь решением .
источник
Я только что придумал это для CBV. Не используется в производстве, но создает для меня PDF. Вероятно, нужно поработать над сообщением об ошибках, но пока что помогает.
Используется как:
источник
html.encode("ISO-8859-1")
наhtml.decode("utf-8")
content_type = "application/pdf"
Попробуйте wkhtmltopdf с одной из следующих оболочек
django-wkhtmltopdf или python-pdfkit
Это отлично сработало для меня, поддерживает javascript и css или что-то еще, что поддерживает браузер webkit.
Более подробное руководство можно найти в этом сообщении в блоге.
источник
Попытавшись заставить это работать слишком много часов, я наконец нашел это: https://github.com/vierno/django-xhtml2pdf
Это форк https://github.com/chrisglass/django-xhtml2pdf, который предоставляет миксин для общего представления на основе классов. Я использовал это так:
Используйте имя модели, которое вы определили в своем представлении, в нижнем регистре при заполнении полей шаблона. Поскольку это GCBV, вы можете просто назвать его как '.as_view' в своем urls.py:
источник
Вы можете использовать редактор iReport для определения макета и публикации отчета на сервере отчетов Jasper. После публикации вы можете вызвать остальной api для получения результатов.
Вот проверка функциональности:
А вот пример реализации вызова:
источник
Я получаю код для создания PDF-файла из шаблона html:
источник
Если у вас есть данные контекста вместе с css и js в вашем шаблоне html. Тогда у вас есть хороший вариант использовать pdfjs .
В своем коде вы можете использовать это так.
В вашем HTML вы можете связать внешние или внутренние css и js, это сгенерирует лучшее качество pdf.
источник