Zeige Seite Zählung mit ReportLab
Frage
Ich versuche, eine einfache „Seite x von y“ zu einem Bericht mit ReportLab gemacht hinzuzufügen .. Ich fand dieses Rezept zu , aber wenn ich es verwenden, ist die resultierende PDF wird die Bilder fehlen. .
Lösung
Ich konnte den NumberedCanvas Ansatz von Activestate implementieren. Es war sehr einfach zu tun und nicht viel von meinem vorhandenen Code ändern. Alles, was ich tun musste, war, dass NumberedCanvas Klasse hinzufügen und das canvasmaker Attribut hinzufügen, wenn mein doc Aufbau. Ich habe auch die Messungen von wo die „x von y“ angezeigt wurde:
self.doc.build(pdf)
wurde
self.doc.build(pdf, canvasmaker=NumberedCanvas)
doc ist ein BaseDocTemplate und pdf ist meine Liste von fließfähigen Elementen.
Andere Tipps
verwenden doc.multiBuild
und im Seitenkopf-Methode (definiert durch "onLaterPages ="):
global TOTALPAGES
if doc.page > TOTALPAGES:
TOTALPAGES = doc.page
else:
canvas.drawString(270 * mm, 5 * mm, "Seite %d/%d" % (doc.page,TOTALPAGES))
Nur einige Code für Sie graben, verwenden wir diese:
SimpleDocTemplate(...).build(self.story,
onFirstPage=self._on_page,
onLaterPages=self._on_page)
Jetzt self._on_page
ist eine Methode, die für jede Seite aufgerufen wird, wie:
def _on_page(self, canvas, doc):
# ... do any additional page formatting here for each page
print doc.page