Habe mich doch noch weiter mit der Thematik 'verändern der Tabellenstruktur mittels SPAN' beschäftigt und habe da evtl. eine Lösung auch für überlange Tabellen gefunden.
Bevor ich aber auf dieses Thema komme, benötige ich nochmals Hilfe zu noisefloorś gepostetem Code, der wirklich prima ist.
Beim Versuch, Daten als Tabelle ausgeben zu lassen, habe ich folgenden Abschnitt entsprechend geändert:
Code: Alles auswählen
def build_story(self, text):
#Frame definieren
b, h = self.breite, self.hoehe
f = Frame(1*cm, 2*cm, b - (2 * cm), h - (5.5 * cm),
showBoundary=0, leftPadding=0, rightPadding=0, id='main')
#PageTemplate definieren
myPage = PageTemplate(id='allPages', frames=[f],
onPage=self.buildHeadFoot, pagesize=(self.breite, self.hoehe))
self.addPageTemplates(myPage)
#Inhalt generieren
widths=(1*cm, 1.25*cm, 2*cm, 1.7*cm, 2.3*cm, 5.5*cm, 2.3*cm, 2.3*cm)
c_style=[('GRID',(0,0),(-1,-1),0.5,'#BFBFBF'),
('FONTSIZE',(0,0),(-1,-1), 10),
]
data = list()
for i in text:
try:
# String
self.story.append(Paragraph(i, self.style['BodyText']))
except AttributeError:
# List, Tuple
line = list()
for o in i:
line.append(Paragraph(o, self.style['BodyText']))
data.append(line)
t=Table(data, colWidths=widths, style=c_style)
self.story.append([t])
return
def main():
filename = '/home/whtb/Scripte/officeplanet/firmware_officeplanet/reportlab/aaaa.pdf'
story = [['001', '50', 'STÜCK', '100000', 'TEST', '12345678901234567890123456789012345678901234567890 TEST ENTHÄLT TEXT', '0.75', '37.50'],
['002', '5000', 'STÜCK', '100000', '4711ABC', 'KARTOFFELCHIPS', '0.75', '3.75'],
['003', '50', 'STÜCK', '100000', '9999ABC', 'BLEISTIFT HB', '0.25', '12.50'],
['004', '1', 'PALETTE', '100000', '750089123', 'KOPIERPAPIER A4', '700.00', '700.00'],
['005', '1', 'PALETTE', '100000', '750089123', 'KOPIERPAPIER A4', '700.00', '700.00'],
['006', '1', 'PALETTE', '100000', '750089123', 'KOPIeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeERPAPIER A4', '700.00', '700.00']]
with open(filename, 'wb') as f:
pdf = myPDF(filename)
pdf.build_story(story)
pdf.multiBuild(pdf.story)
if __name__ == '__main__':
main()
Ich erhalte dabei die Fehlermeldung:
Traceback (most recent call last):
File "def_reportlap_table.py", line 155, in <module>
main()
File "def_reportlap_table.py", line 151, in main
pdf.multiBuild(pdf.story)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 951, in multiBuild
if thing.isIndexing():
AttributeError: 'list' object has no attribute 'isIndexing'
Komme da leider zu keiner Lösung und könnte Eure Hilfe gebrauchen!
Grüße Nobuddy