Create automated strictly-designed multi-page PDF report from HTML

Question:

What are good Python-based options to create strictly designed PDF reports from HTML?

I’ve attached a draft PDF to illustrate the following points:

  • The design of the report is rather strictly designed. In other words "Looks matter".
  • The report contains complex vector graphics (package: Matplotlib).These may slightly differ in size .
  • The report contains images.
  • The report contains a large number of numbers / strings filled in dynamically.
  • Optimally, the solution would use open source packages.
  • We create our HTML with Django.
  • The report may span multiple pages.

It looks as if there was already a good amount of very diverse packages facilitating reporting. Just to name a few, there are xhtml2pdf, weasyprint, django-wkhtmltopdf.

In my experience, it’s easy with these tools to create a PDF from your content. The hard part comes when the PDF needs to fall into a highly-defined design structure as in our case. Unfortunately, I was not able to find example PDFs for the different PDF generation packages that have a highly designed structure.

What is your experience with this? Which options worked well for you? Are there well done complex examples that I’ve overlooked?

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

Asked By: elke

||

Answers:

I recently used weasyprint and jinja to do automated report generation from html. It worked well and I believe would be capable of meeting your strict format requirements. I haven’t used any of the others though.

My report had images, including graphs converted to images, normal dynamically generated text, as well as large tables. All of this was constrained to an 9×11 page size. Weasyprint does a good job of pagination automatically, but also has configurability in that regard.

I found this guide to be very useful:
http://pbpython.com/pdf-reports.html

Although I think pandas is total overkill for html generation of graphs and you lose a lot of configurability using it.

Answered By: Stats4224

You can see this Python package: weasyprint

Web page: http://weasyprint.org/

Official doc: http://weasyprint.readthedocs.io/en/latest/

It’s great, because you can generate the PDF from a web page or an html file, you can have conflicts with some CSS (which are specified in the documentation), but it provides what you need

Answered By: Brian Ocampo