Tutorial :Showing page count with ReportLab



Question:

I'm trying to add a simple "page x of y" to a report made with ReportLab.. I found this old post about it, but maybe six years later something more straightforward has emerged? ^^;
I found this recipe too, but when I use it, the resulting PDF is missing the images..


Solution:1

I was able to implement the NumberedCanvas approach from ActiveState. It was very easy to do and did not change much of my existing code. All I had to do was add that NumberedCanvas class and add the canvasmaker attribute when building my doc. I also changed the measurements of where the "x of y" was displayed:

self.doc.build(pdf)  

became

self.doc.build(pdf, canvasmaker=NumberedCanvas)   

doc is a BaseDocTemplate and pdf is my list of flowable elements.


Solution:2

use doc.multiBuild

and in the page header method (defined by "onLaterPages="):

global TOTALPAGES  if doc.page > TOTALPAGES:      TOTALPAGES = doc.page  else:      canvas.drawString(270 * mm, 5 * mm, "Seite %d/%d" % (doc.page,TOTALPAGES))  


Solution:3

Just digging up some code for you, we use this:

SimpleDocTemplate(...).build(self.story,                               onFirstPage=self._on_page,                               onLaterPages=self._on_page)  

Now self._on_page is a method that gets called for each page like:

def _on_page(self, canvas, doc):      # ... do any additional page formatting here for each page      print doc.page  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »