Slide 1

Slide 1 text

JSON data + RML template = Stefano Cotta Ramusino 2011.06.23 PDF report

Slide 2

Slide 2 text

2011.06.23 2011.06.23 Slide Slide 2 2 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Target Target Request: create a PDF starting from data formatted with a “flexible” layout Requirements: limited disk space (no LaTeX)

Slide 3

Slide 3 text

2011.06.23 2011.06.23 Slide Slide 3 3 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 What's “flexible”? What's “flexible”? No hope: no one knows when layout reaches the final version, if it ever reaches one Error-free: handle some missing input data Dynamic: graphics generated on the fly

Slide 4

Slide 4 text

2011.06.23 2011.06.23 Slide Slide 4 4 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Python PDF Report Engines Python PDF Report Engines ReportLab rst2pdf pisa (xhtml2pdf) Sphinx with rst2pdf and rst2latex PyReport with LaTeX matplotlib (PdfPages method) pod with LibreOffice in server mode

Slide 5

Slide 5 text

2011.06.23 2011.06.23 Slide Slide 5 5 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 ReportLab ReportLab Canvas matryoshka mode Platypus (Page Layout and Typography Using Scripts) RML (Report Markup Language)

Slide 6

Slide 6 text

2011.06.23 2011.06.23 Slide Slide 6 6 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 rml2pdf rml2pdf ReportLab PLUS (commercial) z3c.rml (Zope Community)

Slide 7

Slide 7 text

2011.06.23 2011.06.23 Slide Slide 7 7 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 RML RML Learning path: RML For Idiots RML Samples RML User Guide z3c.RML Reference

Slide 8

Slide 8 text

2011.06.23 2011.06.23 Slide Slide 8 8 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 RML right now RML right now odt2rml based on sxw2rml (Tiny/OpenERP)

Slide 9

Slide 9 text

2011.06.23 2011.06.23 Slide Slide 9 9 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 pyjon.reports pyjon.reports Create PDF in Python using Genshi and RML by Jonathan Schemoul

Slide 10

Slide 10 text

2011.06.23 2011.06.23 Slide Slide 10 10 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Genshi's power Genshi's power template language XInclude support

Slide 11

Slide 11 text

2011.06.23 2011.06.23 Slide Slide 11 11 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Ready to use Ready to use pip install pyjon.reports pil installs also: ReportLab z3c.rml Genshi pyPdf

Slide 12

Slide 12 text

2011.06.23 2011.06.23 Slide Slide 12 12 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Data input format Data input format JSON included in Python 2.6+ YAML need PyYAML or PySick Python itself

Slide 13

Slide 13 text

2011.06.23 2011.06.23 Slide Slide 13 13 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Working model Working model default data languages JSON report.rml story templates stylesheets report RML PDF

Slide 14

Slide 14 text

2011.06.23 2011.06.23 Slide Slide 14 14 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Main code Main code

Slide 15

Slide 15 text

2011.06.23 2011.06.23 Slide Slide 15 15 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 XInclude XInclude

Slide 16

Slide 16 text

2011.06.23 2011.06.23 Slide Slide 16 16 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 JSON loader JSON loader

Slide 17

Slide 17 text

2011.06.23 2011.06.23 Slide Slide 17 17 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 JSON example JSON example

Slide 18

Slide 18 text

2011.06.23 2011.06.23 Slide Slide 18 18 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Real RML content Real RML content

Slide 19

Slide 19 text

2011.06.23 2011.06.23 Slide Slide 19 19 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Dynamic RML content Dynamic RML content

Slide 20

Slide 20 text

2011.06.23 2011.06.23 Slide Slide 20 20 Stefano Cotta Ramusino < Stefano Cotta Ramusino EUROPYTHON 2011 > EUROPYTHON 2011 Questions and answers Questions and answers identi.ca/whitone www.whitone.tk [email protected]