2009-07-06 13 views

Antwort

13

Siehe hierzu my new, improved recipe, wozu ein einfacher Test mit Bildern gehört. Hier ist ein Auszug aus dem Rezept (das den Testcode auslässt):

from reportlab.pdfgen import canvas 
from reportlab.lib.units import mm 

class NumberedCanvas(canvas.Canvas): 
    def __init__(self, *args, **kwargs): 
     canvas.Canvas.__init__(self, *args, **kwargs) 
     self._saved_page_states = [] 

    def showPage(self): 
     self._saved_page_states.append(dict(self.__dict__)) 
     self._startPage() 

    def save(self): 
     """add page info to each page (page x of y)""" 
     num_pages = len(self._saved_page_states) 
     for state in self._saved_page_states: 
      self.__dict__.update(state) 
      self.draw_page_number(num_pages) 
      canvas.Canvas.showPage(self) 
     canvas.Canvas.save(self) 

    def draw_page_number(self, page_count): 
     self.setFont("Helvetica", 7) 
     self.drawRightString(200*mm, 20*mm, 
      "Page %d of %d" % (self._pageNumber, page_count)) 
+0

Vielen Dank! Das scheint zu funktionieren. –

+0

Fühlen Sie sich frei zu upvote ;-) –

+0

Ich habe das obige Snippet ein wenig verändert, da ich nicht direkt die gesamte Seitenzahl zeichnen möchte, sondern stattdessen von allen Teilen, die es benötigen, zur Verfügung stellen. Also definiere ich einen Platzhalter, der später im obigen Code ersetzt wurde (ähnlich wie [fpdf aliasNbPages] (http://www.fpdf.org/en/doc/aliasnbpages.htm)) - https://gist.github.com/k4ml/7061027 – k4ml