Re: How are split, wrap, wrapOn supposed to work?

Robin Becker <[email protected]>
Newsgroups gmane.comp.python.reportlab.user
Message-ID <[email protected]>
Hi Henning,

I started to look at this in a cut down test (see attached).

However I am getting errors in the released version of wordaxe eg

 >>> from wordaxe.rl.NewParagraph import Paragraph
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File 
"C:\code\hg-repos\reportlab\tmp\twordaxe\lib\site-packages\wordaxe\rl\NewParagraph.py", 
line 1185, in <module>
     from reportlab.lib.utils import fp_str
ImportError: cannot import name fp_str
 >>>

should I be using the latest code?

Any how here are the calls that were made to the standard paragraph Wrap function

(twordaxe) C:\code\hg-repos\reportlab\tmp\twordaxe>timageandflowables.py


[email protected](*(-3.000000000000057, 268435455),**{})-->(7.9135, 5352)


[email protected](*(439.27559055118104, 
268435455),**{})-->(439.27559055118104, 60)


[email protected](*(439.27559055118104, 
662.3897637795275),**{})-->(439.27559055118104, 238.71023622047244
)


[email protected](*(439.27559055118104, 
268435455),**{})-->(439.27559055118104, 60)


so it appears as though the base Paragraph tries to lay out something based on 
the negative width and returns an area that cannot fit.
.......
>
> Henning
......
--
Robin Becker
timageandflowables.py (text/plain, 2.4 KB)
import os
from functools import wraps
def logger(f):
    @wraps(f)
    def wrapper(*args,**kwds):
        r = f(*args,**kwds)
        name = f.__name__
        if hasattr(f,'__self__'):
            self = f.__self__
            name = '%s@%8.8x.%s' % (self.__class__.__name__,id(self),name)
        print('\n\n%s(*%r,**%r)-->%r' % (name,args,kwds,r))
        return r
    return wrapper
def main():
    from reportlab.platypus.flowables import ImageAndFlowables, Image
    from reportlab.platypus.doctemplate import SimpleDocTemplate
    if os.environ.get('RL_USE_WORDAXE','0')=='1':
        from wordaxe.rl.styles import getSampleStyleSheet, ParagraphStyle
        from wordaxe.rl.NewParagraph import Paragraph
    else:
        from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
        from reportlab.platypus.paragraph import Paragraph
    gif = 'pythonpowered.gif'
    story = []
    styleSheet = getSampleStyleSheet()
    h3 = styleSheet['Heading3']
    bt = styleSheet['BodyText']
    p = Paragraph('''The concept of an integrated one box solution for advanced voice and
data applications began with the introduction of the IMACS. The
IMACS 200 carries on that tradition with an integrated solution
optimized for smaller port size applications that the IMACS could not
economically address. An array of the most popular interfaces and
features from the IMACS has been bundled into a small 2U chassis
providing the ultimate in ease of installation.''',
                    style=ParagraphStyle(
                            name="base",
                            fontName="Helvetica",
                            leading=12,
                            leftIndent=0,
                            firstLineIndent=0,
                            spaceBefore = 9.5,
                            fontSize=9.5,
                            )
                        )
    p.wrap = logger(p.wrap)
    p.split = logger(p.split)
    i = ImageAndFlowables(
                    Image(gif,width=6*110,height=6*44),
                    p,
                    imageSide='left',
                    )
    i.wrap = logger(i.wrap)
    i.split = logger(i.split)
    story.append(Paragraph('Image larger than the frame',h3))
    story.append(i)
    doc = SimpleDocTemplate('test-henning-case.pdf',showBoundary=1)
    doc.multiBuild(story)

if __name__=='__main__':
    main()
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.