PDF Generation With Reportlab

Albert Leibbrandt albertl at compuscan.co.ug
Mon Jun 28 13:35:33 EDT 2010


Hi All

I am hoping there is someone out there that knows reportlab quite well. 
I posted this on the reportlab mailing list but there is not much 
activity on that list

I am currently generating a pdf report using reportlab 2.3 and python 
2.5.4. The report has a table that spans multiple pages. My problem is 
that the portions on the table that continues after the first page, is 
starting at a point not defined by me, so it creates a layer over the 
logo which is on each page.
How do I specify the starting point of each page the table spans ? 
Normally I would use pagebreak and spacers but I cannot figure out how 
to fit this into the table structure. I also looked at using the 
myLaterPages function, but it does not seem that I can do this with the 
canvas.

Here is a small extract of my current code

doc = SimpleDocTemplate("test.pdf")
Story = [Spacer(1, mm * 60)]
#populate story with first page

record_data = []
for var1, var2, var3, var4, var5 in cursor.fetchall():
     Story.append(PageBreak())
     Story.append(Spacer(1, mm * 15))
     Story.append(Paragraph(var1, heading1))
     Story.append(Spacer(1, mm * 5))
     Story.append(Paragraph(var2, description))
     Story.append(Spacer(1, mm * 5))
     record_data.append([Paragraph('Header 1', grid_header), 
Paragraph('Header 2', grid_header), Paragraph('Header 3', grid_header), 
Paragraph('Header 4', grid_header), Paragraph('Header 5', grid_header)])

     record_data.append([Paragraph(var1, grid), Paragraph(var2, grid), 
Paragraph(var3, grid), Paragraph(var4, grid), Paragraph(var5, grid)])

t = Table(record_data, style=[('GRID', (0, 0), (-1, - 1), 0.5, 
colors.HexColor('#00204E'))], colWidths=[65, 220, 50, 50, 40])
Story.append(t)

doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)


myFirstPage and MyLaterPages are functions that use the canvas to draw 
the page header and footer.

Any advice would be greatly appreciated.

Cheers
Albert





More information about the Python-list mailing list