Pour mon site alimenté par django, je recherche une solution simple pour convertir des pages html dynamiques en pdf.
Les pages incluent du HTML et des graphiques de l'API de visualisation de Google (qui est basée sur JavaScript, mais il est indispensable d'inclure ces graphiques).
Réponses:
Essayez la solution de Reportlab .
Téléchargez-le et installez-le comme d'habitude avec l'installation de python setup.py
Vous devrez également installer les modules suivants: xhtml2pdf, html5lib, pypdf avec easy_install.
Voici un exemple d'utilisation:
Définissez d'abord cette fonction:
Ensuite, vous pouvez l'utiliser comme ceci:
Le gabarit:
J'espère que ça aide.
la source
cStringIO.StringIO
enio.StringIO
, nous devons définirresult
commeresult = io.BytesIO()
au lieu deresult = StringIO
.https://github.com/nigma/django-easy-pdf
Modèle:
Vue:
Si vous souhaitez utiliser django-easy-pdf sur Python 3, consultez la solution suggérée ici .
la source
Je viens de préparer ça pour CBV. Non utilisé en production mais génère un PDF pour moi. A probablement besoin de travail pour le côté des rapports d'erreurs, mais fait l'affaire jusqu'à présent.
Utilisé comme:
la source
html.encode("ISO-8859-1")
parhtml.decode("utf-8")
content_type = "application/pdf"
Essayez wkhtmltopdf avec l'un des wrappers suivants
django-wkhtmltopdf ou python-pdfkit
Cela a très bien fonctionné pour moi, prend en charge javascript et css ou tout autre élément pris en charge par un navigateur Webkit.
Pour un didacticiel plus détaillé, veuillez consulter cet article de blog
la source
Après avoir essayé de faire fonctionner cela pendant trop d'heures, j'ai finalement trouvé ceci: https://github.com/vierno/django-xhtml2pdf
C'est un fork de https://github.com/chrisglass/django-xhtml2pdf qui fournit un mixin pour une vue générique basée sur les classes. Je l'ai utilisé comme ceci:
Utilisez le nom du modèle que vous avez défini dans votre vue en minuscules lorsque vous remplissez les champs du modèle. Parce que c'est un GCBV, vous pouvez simplement l'appeler comme ".as_view" dans votre urls.py:
la source
Vous pouvez utiliser l'éditeur iReport pour définir la mise en page et publier le rapport sur le serveur de rapports jasper. Après la publication, vous pouvez appeler le reste de l'API pour obtenir les résultats.
Voici le test de la fonctionnalité:
Et voici un exemple de l'implémentation de l'appel:
la source
Je reçois le code pour générer le PDF à partir du modèle html:
la source
Si vous avez des données de contexte avec css et js dans votre modèle html. Que vous avez une bonne option pour utiliser pdfjs .
Dans votre code, vous pouvez utiliser comme ceci.
Dans votre HTML, vous pouvez lier des css et js externes ou internes, cela générera la meilleure qualité de pdf.
la source