[reportlab-users] Fwd: text of paragraph sits at bottom of area.
Kerri Reno
kreno at yumaed.org
Tue Apr 7 11:28:12 EDT 2009
Thanks for your suggestions! I will try them out, and let you know.
Kerri
On Tue, Apr 7, 2009 at 3:52 AM, Robin Becker <robin at reportlab.com> wrote:
> Kerri Reno wrote:
> .........
>
>
>> I'm creating a pay stub with reportlab, that has to fit on one page. I
>> started with Jeff Bauer's hcfa1500.py from the reportlab web site - THANKS
>> JEFF! I was able to modify it to fit my needs, even including a couple of
>> paragraphs. My problem is that the paragraphs print in the bottom of the
>> allowed area.
>>
>> I'm using
>>
>> stylesheet = getSampleStyleSheet()
>> style = stylesheet['Normal']
>> style.fontName=self.text_font
>> style.fontSize = self.text_size
>> style.leading = int(self.text_size * 1.2)
>> c = self.canvas
>>
>> # x, y = bottom left corner of area
>> # width and height are the maximum area I want the
>> # paragraph to use up
>> p = Paragraph(v,style)
>> f = KeepInFrame(width,height,[p],mode='shrink')
>> f.wrapOn(c,width,height)
>> f.drawOn(c,x,y)
>>
>> This works great, except if the text of the paragraph doesn't take up all
>> the space, then it prints in the bottom portion of the area.
>>
>> I've searched the documentation and the web for an answer, and I just
>> can't
>> find it. I'd appreciate any help you can give me.
>>
>> Thanks in Advance!
>> Kerri
>>
>> ........
>
> first off the normal way of drawing paragraphs is with the platypus
> doctemplate frame work. But if you wish to do this directly into a canvas
> then it's wise to know the api that's used.
>
> First off wrap/wrapOn return the width and height that is used by the
> flowable;
>
> eg
> # NB w, h don't have to be equal to width and height
> w,h = f.wrapOn(c,width,height)
>
> then the x and y for the drawOn correspond to the bottom left of the
> flowable. Assuming you wish to draw from the top down you need to subtract
> the height from the top left y.
>
>
>
> try this script to get some idea of where things are
>
> from reportlab.pdfgen.canvas import Canvas
> from reportlab.lib.styles import getSampleStyleSheet
> from reportlab.platypus.paragraph import Paragraph
> from reportlab.platypus.flowables import KeepInFrame
> stylesheet = getSampleStyleSheet()
> style = stylesheet['Normal']
> style.fontName = 'Helvetica'
> style.fontSize = 10
> style.leading = int(style.fontSize * 1.2)
> c = Canvas('simple.pdf')
>
> width=72 #1in x 1in width for our para
> height=72
>
> #define top left
> tlx = 72 #one inch in from left
> tly = c._pagesize[1] - 72 #one inch down from top
>
> #show our area
> c.setLineWidth = 1
> c.setStrokeColor((1,0,0)) #red
> c.rect(tlx,tly,width,-height,stroke=1,fill=0)
>
> p = Paragraph('This is a silly paragraph that\'s used to make up the
> numbers and show the world where things go.',style)
> f = KeepInFrame(width,height,[p],mode='shrink')
> w,h=f.wrapOn(c,width,height)
> f.drawOn(c,tlx,tly-height)
> c.showPage()
> c.save()
> --
> Robin Becker
>
> _______________________________________________
> reportlab-users mailing list
> reportlab-users at reportlab.com
> http://two.pairlist.net/mailman/listinfo/reportlab-users
>
--
Yuma Educational Computer Consortium
Compass Development Team
Kerri Reno
kreno at yumaed.org (928) 502-4240
.·:*¨¨*:·. .·:*¨¨*:·. .·:*¨¨*:·.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20090407/8e033fd7/attachment.htm>
More information about the reportlab-users
mailing list