Re: Line-wrapping in tables

Steve Hill <[email protected]>
Newsgroups gmane.comp.python.reportlab.user
Organization Opendium Limited
Message-ID <[email protected]>
On 07/04/14 17:55, Tim Roberts wrote:

> What would be "more sensible"?  ReportLab doesn't do hyphenation.  If
> there are no spaces, then there's no place to break.

Well, by "more sensible" I really just mean tweakable in some way to
make the results readable.

At the moment I'm producing a report that contains various things
without spaces, such as web URIs, etc.  The upshot is that any long
lines just get rendered on top of each other (since they escape the
table cell boundaries), which makes them unreadable.  They also run off
the edge of the page, again making them unreadable.

I realise that hyphenation is hard, but even just splitting the line at
a non-space character (and not bothering to do hyphenation) would be
preferable to the current situation, since at least then the results
would be readable.

I guess the rules I'd like to implement are fairly simple:

1. Split the line at a space, as is currently done.
2. If there isn't a space, split at some punctuation
3. As a last ditch effort, if there's no suitable space or punctuation,
just split the line wherever it starts to overflow from the containing box.

> Genuine hyphenation is hard.  Really hard.  There is a dump hyphenator
> in ReportLab (lib/textsplit.py), but it doesn't use English rules.  It
> just inserts the hyphen at the last place it fits.
> 
> If you just want to have the long text wrap at the last character that
> fits, you can do that yourself.  It's not hard.

How do I integrate a custom splitting function (or the dumb function you
mentioned) into the Paragraph class?  From looking at the code, it
appears to use the split() function defined in paragraph.py; however,
this function is not within the Paragraph class, so this doesn't appear
to be a simple job of defining a new class that inherits from Paragraph
and contains a replacement for the split() function.

Is there some option I've missed to tell it to use a different split
function?

-- 

 - Steve Hill
   Technical Director
   Opendium Limited     http://www.opendium.com

Direct contacts:
   Instant messager: xmpp:[email protected]
   Email:            [email protected]
   Phone:            sip:[email protected]

Sales / enquiries contacts:
   Email:            [email protected]
   Phone:            +44-844-9791439 / sip:[email protected]

Support contacts:
   Email:            [email protected]
   Phone:            +44-844-4844916 / sip:[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.