[reportlab-users] Querying left over space

Robin Becker robin at reportlab.com
Mon Sep 14 12:59:45 EDT 2009

Mike Driscoll wrote:

> Hi,


> Is there a way to query how much horizontal and vertical space is left

> on a page? And is there a way to know how much "space" a line of text in

> 10 point will take up? I am working with nested tables and it keeps

> splitting one of the nested over two pages whereas I need it to keep the

> nested table in one piece. I hope that makes sense.


> I am coding on a Windows XP machine with Python 2.5 and ReportLab 2.3.


> Thanks,


> Mike

I assume that you're using platypus to do the layout; the document's active
template has an active frame that controls the layout. The coding that's used to
determine whether something can be added is in the _add method of the Frame
class. It looks something like this

y = self._y
p = self._y1p
s = 0
aW = self._getAvailableWidth()
if not self._atTop:
s =flowable.getSpaceBefore()
if self._oASpace:
s = max(s-self._prevASpace,0)
h = y - p - s
if h>0:
w, h = flowable.wrap(aW, h)
return 0
h += s
y -= h
if y < p-_FUZZ:
if not rl_config.allowTableBoundsErrors and ((h>self._aH or w>aW) and not
from reportlab.platypus.doctemplate import LayoutError
raise LayoutError("Flowable %s (%sx%s points) too large for frame (%sx%s
points)." % (
flowable.__class__, w,h, aW,self._aH))
return 0

if you ignore the space before stuff then effectively the vertical space
remaining is
activeFrame._y - activeFrame._y1p

hope this helps.
Robin Becker

More information about the reportlab-users mailing list