Reportlap Zeilenumbruch in Tabelle
Verfasst: Dienstag 18. Dezember 2018, 08:13
Ich hab eine generierte List, deren Textinhalt teilweise sehr lang sein kann und immer eine unterschiedliche Anzahl an items haben kann. Auch nach langem recherchieren habe ich keine für mich laufende Lösung finden können wie man einen Zeilenumbruch automatisch einfügt. Momentan läuft meine Tabelle einfach über die Seite herüber. Ich habe gefunden, dass ein einfügen des befehl Paragraph die gewünscht funktion herbeiführt, leider muss diese soweit ich verstanden habe für jedes item manuel eingefügt werden.
Ich wäre euch sehr dankbar um Hilfe für die die folgenden 2 Probleme:
1. Die Tabellenbreite der Seite anpassen --> also eine fixe Breite festlegen (z.T. ist sie bei wenig Inhalt nur so eine kleiner Fleck auf der Seite)
2. Wie kann man automatisch einen Zeilenumbruch für jedes item der liste hinzufügen. --> ich hatte überlegt dass man vielleicht jedes item durch eine Schleife mit Paragaph laufen lässt, bekomme dies aber leider nicht programmiert, bzw. bei mir ist dann Paragaph ein teil des string ...
Ich wäre euch unglaublich dankbar um Hilfe.
Anbei mein Code in gekürzter Fassung:
Ich wäre euch sehr dankbar um Hilfe für die die folgenden 2 Probleme:
1. Die Tabellenbreite der Seite anpassen --> also eine fixe Breite festlegen (z.T. ist sie bei wenig Inhalt nur so eine kleiner Fleck auf der Seite)
2. Wie kann man automatisch einen Zeilenumbruch für jedes item der liste hinzufügen. --> ich hatte überlegt dass man vielleicht jedes item durch eine Schleife mit Paragaph laufen lässt, bekomme dies aber leider nicht programmiert, bzw. bei mir ist dann Paragaph ein teil des string ...
Ich wäre euch unglaublich dankbar um Hilfe.
Anbei mein Code in gekürzter Fassung:
Code: Alles auswählen
from reportlab.lib.pagesizes import A4
from reportlab.lib.pagesizes import letter, cm
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import LongTable, TableStyle, BaseDocTemplate, Frame, PageTemplate
from reportlab.lib import colors
from reportlab.platypus import Paragraph, Table, TableStyle
########################################################################
def test():
doc = BaseDocTemplate(
"question.pdf",
pagesize=A4,
rightMargin=72,
leftMargin=72,
topMargin=50,
bottomMargin=80,
showBoundary=False)
elements = []
data = [['A', 'B', 'C', 'dddddddddddd', 'D'],
['00', '0dddddddddddddddddddddddddddddddddddd1', '02', 'fff', '04'],
['10', '11', '12', 'dfg', '14'],
['20', '21', '22', 'ddddddddddddddddddddddddddddddddddd dddddddddddddddddddd23', '24'],
]
t = LongTable(data)
tableStyle = [
('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
('BOX', (0, 0), (-1, -1), 0.25, colors.black),
]
t.setStyle(TableStyle(tableStyle))
elements.append(t)
styles = getSampleStyleSheet()
styleN = styles['Normal']
frame = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height - 2 * cm, id='normal')
template = PageTemplate(id='longtable', frames=frame)
doc.addPageTemplates([template])
doc.build(elements)
if __name__ == '__main__':
test()`