[reportlab-users] Page Numbering without Platypus

Rob Schall rschall at callone.net
Tue Aug 29 09:59:00 EDT 2006

Tim Roberts wrote:
> Rob Schall wrote:
>> I'm currently working on a python class which will automatically
>> generate contracts for our company. Since they are legal documents, I
>> need to ensure the page numbers are at the bottom in the X of Y
>> format. However, everything I've found online refers to using platypus
>> to make it work. I've made the attempt to do it without, but either
>> I'm definatly not very good with reportlab, or I'm just missing
>> something. Currently, the program watches the status of each page and
>> determines if you are nearing a page end. Once it determines a new
>> page is needed, it runs the "footer" function which looks like this:
>> def footer(self, posX, posY):
>>        """Show Footer Information"""
>>        width, height = self.c._pagesize
>>        width -= self.RightMargin + self.LeftMargin
>>        self.c.drawCentredString(width/2, posY, self.data["footer"])
>>        print ('setPage%d'%self.pageNumber)
>>        self.c.beginForm('setPage%d'%self.pageNumber)
>>        self.c.drawString(width/2,posY-10,"Page 1 of
>> %d"%self.c.getPageNumber())
>>        self.c.endForm()
>>        self.pageNumber += 1
>> then a showPage is done and it continues on. Just before the final
>> save, i have final function that does:
>> def pageNumbers(self):
>>        for page in range(1,self.pageNumber):
>>           print ("setPage%d"%page)
>>           self.c.doForm("setPage%d"%page)
>>        return 1
>> Right now, they all appear on the last page. I'm not fully sure why,
>> or how to fix this.
> I think you have this backwards.  The "doForm" will insert the form at
> that point.  You want to "doForm" at the bottom of each page, and then
> create the forms with beginForm after you know the page numbering.  The
> "doForm" reference will be unknown until the document is complete.
You are a very very smart man. That, or I'm far from it. :)

All works like a charm now.

Thanks again!

More information about the reportlab-users mailing list