Dynamischer Spacer in Reportlab

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ptikobj
User
Beiträge: 1
Registriert: Dienstag 27. April 2010, 16:17

Hallo zusammen,

ich möchte mit Platypus ein PDF erstellen, dass immer genau eine Seite (page) besitzt, ich will also keine page breaks.
Ziel ist, dass oben ein kleiner Text und ganz unten auf der Seite ein weiteres Flowable ist. Bis jetzt verwende ich zwischen diesem oberen und dem unteren Flowable einen statischen Spacer.
statisch heißt hier, seine argumente sind konstant:

Code: Alles auswählen

s = Spacer(width=0, width=22*cm)
das führt dazu, dass, falls das untere Flowable zu groß wird, was durchaus in meiner anwendung passieren kann, ein Page break gemacht wird.
das möchte ich aber vermeiden.
Wie kann ich also einen Spacer zwischen die beiden Flowables packen, der exakt den Platz aufbraucht, der zwischen ihnen ist?

Ich wäre für Hinweise dankbar. Vielleicht muss ich auch meine Herangehensweise ändern und kann gar keinen Spacer verwenden?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich hab's anders gelöst, indem ich Flowables auf einen Canvas zeichne. Also eine Mischung aus Platypus und pdfgen.

Nachteil: Wenn der "untere" Text zu lange ist, läuft es aus dem Canvas raus. Ohne wenn und aber. Und ohne PageBreak.

Es gibt aber auch eine Funktion, mit der du die Länge von Flowables bestimmen kannst (AFAIK wrap). Dann kannst du rechnen:

Gesamtseitenhöhe - 1. flowable - 2. flowable = Space

Habe ich aber bei mir nie wirklich hinbekommen...

Gruß, noisefloor
Antworten