[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