Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Producing PDFs in landscape orientation with ReportLab

I am working on a Python script that produces a PDF report using ReportLab. I need to produce the pages in landscape orientation and I have already looked through the ReportLab manual but I can't find a way of doing this. Any ideas or suggestions?

like image 653
Osmond Bishop Avatar asked Mar 19 '13 02:03

Osmond Bishop


1 Answers

Make sure you've imported

from reportlab.lib.pagesizes import letter, landscape

And then:

canvas.setPageSize(landscape(letter))

Or more generally,

canvas.setPageSize(width, height)

and you can set it to be any size you like. Remember reportlab uses points, where 1 point is 1/72 of an inch. You can also import:

from reportlab.lib.units import inch

Which lets you do things like:

canvas.setPageSize(11*inch, 8.5*inch)

EDIT: Added all the built in page sizes inspired by yentsun.

Diving into the reportlab.lib.pagesizes source code, we find in all:

A0,A1,A2,A3,A4,A5,A6
B0,B1,B2,B3,B4,B5,B6
LETTER, LEGAL, ELEVENSEVENTEEN

The comments claims that the lowercase letter has been deprecated since 2001, but is still available. Additionally, two functions are avaialable, portrait and landscape that each take in a tuple pagesize, and portrait returns the tuple with the smaller dimension first, and landscape returns the tuple with the larger dimension first.

like image 193
Kyle Heuton Avatar answered Oct 10 '22 16:10

Kyle Heuton