web-dev-qa-db-fra.com

Python: Créez un rapport .pdf multi-pages strictement conçu et automatisé à partir de .html

Quelles sont les bonnes options basées sur Python pour créer des rapports .pdf strictement conçus à partir de .html?

J'ai joint un projet de fichier .pdf pour illustrer les points suivants:

  • La conception du rapport est plutôt conçue de manière stricte. En d'autres termes, "l'apparence compte".
  • Le rapport contient des graphiques vectoriels complexes (package: Matplotlib ). Leur taille peut légèrement différer.
  • Le rapport contient des images.
  • Le rapport contient un grand nombre de nombres/chaînes remplis dynamiquement.
  • De manière optimale, la solution utiliserait des packages open source.
  • Nous créons notre .html avec Django .
  • Le rapport peut s'étendre sur plusieurs pages.

Il semble qu'il y ait déjà eu une bonne quantité de packages très diversifiés facilitant les rapports. Pour n'en nommer que quelques-uns, il y a xhtml2pdf , weasyprint , Django-wkhtmltopdf .

D'après mon expérience, il est facile avec ces outils de créer un .pdf à partir de votre contenu. La partie difficile survient lorsque le .pdf doit tomber dans une structure de conception très définie comme dans notre cas. Malheureusement, je n'ai pas pu trouver d'exemple .pdfs pour les différents packages de génération de pdf qui ont une structure très conçue.

Quelle est votre expérience avec cela? Quelles options ont bien fonctionné pour vous? Y a-t-il des exemples complexes bien faits que j'ai négligés?

Some example of a strictly-designed "Looks matter" report

12
elke

Vous pouvez voir ceci Python package: weasyprint

Page Web: http://weasyprint.org/

Doc officiel: http://weasyprint.readthedocs.io/en/latest/

C'est génial, car vous pouvez générer le PDF à partir d'une page Web ou d'un fichier html, vous pouvez avoir des conflits avec certains CSS (qui sont spécifiés dans la documentation), mais il fournit ce dont vous avez besoin

4
Brian Ocampo

J'ai récemment utilisé weasyprint et jinja pour générer automatiquement des rapports à partir de html. Cela a bien fonctionné et je pense qu'il serait capable de répondre à vos exigences de format strictes. Je n'ai utilisé aucun des autres cependant.

Mon rapport contenait des images, y compris des graphiques convertis en images, du texte généré dynamiquement normal, ainsi que de grands tableaux. Tout cela était limité à une taille de page de 9 x 11. Weasyprint fait un bon travail de pagination automatiquement, mais a également une configurabilité à cet égard.

J'ai trouvé ce guide très utile: http://pbpython.com/pdf-reports.html

Bien que je pense que pandas est une surpuissance totale pour la génération html de graphiques et vous perdez beaucoup de configurabilité en l'utilisant.

3
Stats4224