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. .

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top