[reportlab-users] Dynamic page sizes

Robin Becker robin at reportlab.com
Tue Oct 18 04:44:20 EDT 2011

On 17/10/2011 18:30, Glenn Linderman wrote:

> I publish poetry in PDF format, because friends with iOS devices and iBooks

> software have informed me that the PDF format is great for use with iBooks...

> each page can contain one poem, and double-tapping the screen causes iBooks to

> "zoom to width" of the text, presenting a nice, screen-filling,

> vertically-scrolling-if-needed page containing the poem at the largest font size

> that avoids line breaks.


> I generate the PDF files using 8.5x11 paper size, and 10 point font.


> The question: How could I generate the PDF file with variant page sizes (widths

> primarily, but possibly height as well), such that each poem would have a page

> size that just fits the poem? I speculate this would avoid the need for the

> double-tap when viewing on iOS devices.


> Glenn


what method do you use to create the standard letter size documents? ReportLab
has both page oriented and document oriented mechanisms built in.

If you use a Canvas ie page oriented then it's possible to change the page size
that the canvas will use.

from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.colors import green
registerFont(TTFont("Vera", "Vera.ttf"))
registerFont(TTFont("VeraBI", "VeraBI.ttf"))
c = Canvas('helloworld.pdf', pagesize=(300,500))
c.setFont('Vera', 10)
c.drawString(100, 200, u'Hello World')
c.setFont('Vera', 20)
c.drawString(100, 300, u'Hello World')

if you use the document oriented layout then page sizes are normally determined
by a page template so you have to switch the template before the next page throw
etc etc
Robin Becker

More information about the reportlab-users mailing list