views:

593

answers:

2

Hi everyone!
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..

A: 

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
Ali A
Yes but the tricky part is how to figure out the "of y" part :) That is, the total number of pages
Joril
+1  A: 

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.

adam
Did images show up normally with that approach?
Joril
I do have images displaying on the pdf without any problems. If you are having a problem with images, could you elaborate or start a new question?
adam