From: Albert Leibbrandt on 28 Jun 2010 13:35 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
From: Tim Roberts on 30 Jun 2010 03:52 Albert Leibbrandt <albertl(a)compuscan.co.ug> wrote: > >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 Never the less, that is the correct forum for this question. The ReportLab mailing list is operated and manned by ReportLab employees. They know the code better than anyone. >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 ? Are you talking about something more sophisticated than setting the topMargin property in the SimpleDocTemplate constructor? If you have a logo on each page, you'd want your top margin to exclude that logo. The default top margin is 1 inch. If that's not enough, extend it. If you need different margins on different pages, then you need something more sophisticated than SimpleDocTemplate. >Normally I would use pagebreak and spacers but I cannot figure out how >to fit this into the table structure. Page breaks and spacers are absolutely the wrong way to handle this. Think about this as a Word document. If you want to exclude the logo, you'd change the top margin to protect it. -- Tim Roberts, timr(a)probo.com Providenza & Boekelheide, Inc.
From: Albert Leibbrandt on 30 Jun 2010 09:18 On 2010/06/30 10:52 AM, Tim Roberts wrote: > Albert Leibbrandt<albertl(a)compuscan.co.ug> wrote: > >> 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 >> > Never the less, that is the correct forum for this question. The ReportLab > mailing list is operated and manned by ReportLab employees. They know the > code better than anyone. > > >> 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 ? >> > Are you talking about something more sophisticated than setting the > topMargin property in the SimpleDocTemplate constructor? If you have a > logo on each page, you'd want your top margin to exclude that logo. The > default top margin is 1 inch. If that's not enough, extend it. If you > need different margins on different pages, then you need something more > sophisticated than SimpleDocTemplate. > > >> Normally I would use pagebreak and spacers but I cannot figure out how >> to fit this into the table structure. >> > Page breaks and spacers are absolutely the wrong way to handle this. Think > about this as a Word document. If you want to exclude the logo, you'd > change the top margin to protect it. > Thanks a mil Tim, your reply actually gave me what I was looking for. too little sleep on my part ... Cheers Albert
|
Pages: 1 Prev: N00b question: matching stuff with variables. Next: dynamically modify help text |