Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: 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

like image 212
elke Avatar asked Feb 07 '17 13:02

elke


People also ask

How do I create an automated PDF in Python?

Create PDFs with Python Library – PDFKit You can run the command in the console to generate PDFs. To use the command-line in Python, JazzCore developed PDFKit – a wrapper for wkhtmltopdf utility. Once wkhtmltopdf and PDFKit are installed, the next step is to create a Python file to generate a PDF from a URL.

Can Python create PDF report?

Creating PDF Reports with Plotly Graphs and Python. Since Plotly graphs can be embedded in HTML or exported as a static image, you can embed Plotly graphs in reports suited for print and for the web. This notebook is a primer on creating PDF reports with Python from HTML with Plotly graphs.


2 Answers

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

like image 197
Brian Ocampo Avatar answered Oct 15 '22 01:10

Brian Ocampo


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 9x11 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.

like image 24
Stats4224 Avatar answered Oct 15 '22 01:10

Stats4224