[reportlab-users] split string by width.
Tim Roberts
timr at probo.com
Fri Nov 5 16:26:25 EDT 2010
Juan Efren Castillo wrote:
> I need to print a single long string.
>
> reportlab.lib.utils.SimpleSplit works splitting by blank spaces, but
> this string has no spaces
>
> My solution was to divide string into "chunks"
>
> y = 0
> for t in chunks(r, MAXCHARS):
> p.drawString(d.x, page_size[1] - d.y + y, t)
> y -= p._leading
>
>
> How ever I don't like this solution because MAXCHARS is always
> different depending on Font and Size of the text.
>
> Any ideas how to calculate MAXCHARS ? or another solution to this?
The only solution is to do it by hand, checking one character at a time
until the string is too long: I assume "p" is your canvas and "r" has
the incoming string. I might choose different variable names...
# Assume maxWidth has the maximum width.
tmpstr = ""
for c in r:
if p.stringWidth(s+c) > maxWidth:
p.drawString(d.x, page_size[1] - d.y + y, tmpstr)
y -= p._leading
tmpstr = ""
tmpstr+= c
if tmpstr:
p.drawString(d.x, page_size[1] - d.y + y, tmpstr)
y -= p._leading
--
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.
More information about the reportlab-users
mailing list