Eine mehrzeilige(Absatz -) - und Fußzeile in reportlab
Was ist der beste Weg, um ein-und Fußzeile in reportlab, dass nicht nur eine einzelne Zeile, das kann sein gezeichnet auf Leinwand.Kordelzug in der onPage-Funktion. Nicht einen Weg finden, so etwas wie Absatz in Kopf - /Fußzeile in der onPage-Funktion. Was ist der beste Weg, dies zu behandeln? Gibt es einen Weg, um einen Absatz in der Fußzeile ?
InformationsquelleAutor der Frage Aldarund | 2012-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie beliebige Zeichnung Befehle in die onPage-Funktion, so können Sie ziehen Sie einfach eines Absatzes (siehe Abschnitt 5.3 in der reportlab-Benutzerhandbuch) Ihre Funktion.
Hier ein komplettes Beispiel:
InformationsquelleAutor der Antwort jochen
Jochen, die Antwort ist toll, aber ich fand es unvollständig. Es funktioniert für Fußzeilen, aber nicht für Kopf-als Reportlab wird das zeichnen des flowables auf der Oberseite des Kopfes. Sie müssen sicher sein, die Größe des Rahmens, die Sie erstellen, schließt den Raum genommen, indem Sie den header, so flowabls sind nicht gedruckten, oben auf den header.
Mithilfe von jochen-code, hier ist ein komplettes Beispiel für die Kopfzeilen:
Achten Sie auf die Unabhängigkeitserklärung des Rahmens, es zieht 2 cm von der Höhe des Rahmens, um Platz für die Kopfzeile. Die flowables werden gedruckt, in den Rahmen, so können Sie ändern Sie die Größe des Rahmens zu ermöglichen, für verschiedene Größen von überschriften.
Ich finde auch, dass ich in der Regel übergeben müssen Variablen in den header, so habe ich eine partielle Funktion zugewiesen onPage, so dass der Inhalt der header übergeben werden können. Auf diese Weise können Sie eine variable header auf der Grundlage der Inhalt der Seite.
InformationsquelleAutor der Antwort NateB80
Ich weiß das ist ein bisschen alt, aber ich habe auf dieses problem und konnte es lösen. Wenn Sie mehr als eine Seite in Ihrer PDF-Datei und möchte die Fußzeile/Kopfzeile auf jeder Seite haben, müssen Sie auf
NextPageTemplate('template_id')
. Ich bin nur das schreiben der entsprechende code wie der rest gezeigt wird im @jochen-Beispiel oben.In meinem Fall, ich war mit
PageBreak()
und es dauerte eine Weile, um zu verstehen, warum war ich nur immer in der Fußzeile auf der ersten Seite.InformationsquelleAutor der Antwort shifloni