[reportlab-users] Multi-page formatting in Platypus

Peter Mattingly pmattingly at mail.csuchico.edu
Fri Oct 17 22:22:53 EDT 2008



>

> tests/test_platypus_*.py

>


I'm using version 2.1 (the one available in the Ubuntu repositories), I have
no directory named "tests" in my reportlab directories:

/usr/share/doc/python-reportlab-doc
/usr/share/doc/python-reportlab
/usr/share/pyshared/reportlab

There aren't any directories named "tests" on my system, related to
reportlab. Any other places I should be looking? Should I be grabbing the
"tests" from the SVN?

tools/docco/rltemplate.py which is the template used for the manual.


This I was able to find, where you said it would be. I'm at a loss where to
look in this file, there's no comment labeled "Using a call back for the
header here" or anything like that. No class definitions, no function
definitions, etc. I did - however - see "Heading1" and "Heading2":

if style == 'Title':

> self.title = flowable.getPlainText()

> elif style == 'Heading1':

> self.chapter = flowable.getPlainText()

> key = 'ch%d' % self.chapterNo

> self.canv.bookmarkPage(key)

> self.canv.addOutlineEntry(flowable.getPlainText(),

> key, 0, 0)

> self.chapterNo = self.chapterNo + 1

> self.sectionNo = 1

> elif style == 'Heading2':

> self.section = flowable.text

> key = 'ch%ds%d' % (self.chapterNo, self.sectionNo)

> self.canv.bookmarkPage(key)

> self.canv.addOutlineEntry(flowable.getPlainText(),

> key, 1, 0)

> self.sectionNo = self.sectionNo + 1



It doesn't look like this is what you're talking about.

Then I looked for things that take PageTemplate's, which there were several:

class FrontCoverTemplate(PageTemplate):

> def __init__(self, id, pageSize=defaultPageSize):

> self.pageWidth = pageSize[0]

> self.pageHeight = pageSize[1]

> frame1 = Frame(inch,

> 3*inch,

> self.pageWidth - 2*inch,

> self.pageHeight - 518, id='cover')

> PageTemplate.__init__(self, id, [frame1]) # note lack of onPage

>

> def afterDrawPage(self, canvas, doc):

> canvas.saveState()

> canvas.drawImage('../images/replogo.gif',2*inch, 8*inch)

>

>

> canvas.setFont('Times-Roman', 10)

> canvas.line(inch, 120, self.pageWidth - inch, 120)

>

> canvas.drawString(inch, 100, '165 The Broadway')

> canvas.drawString(inch, 88, 'Wimbledon')

> canvas.drawString(inch, 76, 'London SW19 1NE')

> canvas.drawString(inch, 64, 'United Kingdom')

>

> canvas.restoreState()



This seemed to be the closes to what you were talking about. Though again
without some sort of pointer, comment or clue I don't see which of these
commands actually relates to which sections of the page.

Though I may be completely wrong.

This file seems awfully short for a template for the entire manual. Do I
have a the document you're thinking of?

On Mon, Oct 13, 2008 at 3:21 PM, Andy Robinson <andy at reportlab.com> wrote:


> 2008/10/13 Peter Mattingly <pmattingly at mail.csuchico.edu>:

>

> >

> > So: How do I define my frames across all of my pages?

>

> Headers like this don't go in frames. The frames are for the flowing

> content.

> They must be defined either as callback functions passed to the

> PageTemplate's constructor,

> which decorate the new page when it starts; or as subclasses of

> PageTemplate which do

> the same. Providing a generic "graphics callback" is far more

> flexible; it lets you do

> page borders, not just filling a box at the top or bottom like most

> word processors.

>

> Look at some of the tests in tests/test_platypus_*.py, or in

> tools/docco/rltemplate.py which is the template used for the manual.

>

> I admit the manual never explained this well; if someone can send in a

> contrib for this for the Platypus chapter, we'd be really grateful.

>

> - Andy

> _______________________________________________

> reportlab-users mailing list

> reportlab-users at reportlab.com

> http://two.pairlist.net/mailman/listinfo/reportlab-users

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20081017/135f35f4/attachment.htm>


More information about the reportlab-users mailing list