Search code examples
pythonhtmlpdfmatplotlibpdf-generation

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


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


Solution

  • 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