Showing page count with ReportLab

后端 未结 3 1794
攒了一身酷
攒了一身酷 2020-12-15 23:48

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 em

相关标签:
3条回答
  • 2020-12-15 23:53

    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
    
    0 讨论(0)
  • 2020-12-16 00:00

    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.

    0 讨论(0)
  • 2020-12-16 00:10

    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))
    
    0 讨论(0)
提交回复
热议问题