Ich entwerfe ein zweiseitiges Formular zum Drucken Duplex. Nachdem ich einen Seitenumbruch hinzufügen, bekomme ich folgende Fehlermeldung:Reportlab Fehler nach Seitenumbruch
File "f:\Dropbox\pms\pms_reports.py", line 450, in <module>
a = Key_card1()
File "f:\Dropbox\pms\pms_reports.py", line 441, in __init__
doc.build(elements)
File "c:\Python34\Lib\site-packages\reportlab\platypus\doctemplate.py", line 1171, in build
BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
File "c:\Python34\Lib\site-packages\reportlab\platypus\doctemplate.py", line 927, in build
self.handle_flowable(flowables)
File "c:\Python34\Lib\site-packages\reportlab\platypus\doctemplate.py", line 775, in handle_flowable
self.handle_keepWithNext(flowables)
File "c:\Python34\Lib\site-packages\reportlab\platypus\doctemplate.py", line 742, in handle_keepWithNext
while i<n and flowables[i].getKeepWithNext(): i += 1
builtins.TypeError: getKeepWithNext() missing 1 required positional argument: 'self'
Hier ist mein Code:
from reportlab.lib.pagesizes import A4, landscape
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, PageBreak
from reportlab.lib.styles import getSampleStyleSheet
class Key_card1():
def __init__(self, start_date=datetime.now(), room="1",
end_date=datetime.now()+timedelta(days=1), password = "999999"):
stylesheet = getSampleStyleSheet()
doc = SimpleDocTemplate("key_card.pdf", pagesize=A4)
if password == "999999":
password = str(random.randint(10000,99999))
roomno = "Room" + room
w_text = []
w_text.append(Paragraph("To use the wireless broadband…:",stylesheet["BodyText"]))
w_text.append(Paragraph("User id: <b>" + roomno + "</b>", stylesheet["BodyText"]))
w_text.append(Paragraph("Password: <b>" + password + "</b>", stylesheet["BodyText"]))
message_text = []
message_text.append(Paragraph("Our current menus ...", stylesheet["BodyText"]))
message_text.append(Paragraph("Our restaurant can get very busy ...",stylesheet["BodyText"]))
message_text.append(Paragraph("Your shower has a safety device to...", stylesheet["BodyText"]))
message_text .append(Paragraph("Please do not hesitate to call...",stylesheet["BodyText"]))
elements=[]
table_data = [(w_text, message_text)]
the_table = Table(table_data)
the_table.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'MIDDLE')]))
elements.append(the_table)
elements.append(PageBreak)
#Cover page
logo= "y:\marketing\priory_master_logo bw.jpg"
im = Image(logo, 3*cm, 1.258*cm)
cover_data = []
cover_data.append(im)
cover_data.append(Paragraph("Room number : " + room, stylesheet["BodyText"]))
left_cell =[]
left_cell.append(Paragraph(" ", stylesheet["BodyText"]))
table_data1 = [(left_cell, cover_data)]
the_table1 = Table(table_data1)
the_table1.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'MIDDLE')]))
elements.append(the_table1)
doc.build(elements)
Ich versuchte, die Reportlab Module zu modifizieren, aber ich war nicht erfolgreich. Hat jemand Ideen?
Ich konvertierte den Code, der ein pageTemplate und einen Frame erzeugte, und verwendete BaseDocTemplate und bekam genau den gleichen Fehler. Wenn ich den Seitenumbruch auskommentiere, wird alles ohne Fehler ausgedruckt (außer keinem Seitenumbruch). – Dkellygb
Ich glaube ich fand es 'elements.append (PageBreak)' sollte 'elements.append (PageBreak())' sein. Ich googelte "fehlende 1 erforderliche positional Argument: 'selbst'" und fand diese [link] (http://stackoverflow.com/questions/17534345/typeerror-missing-1-required-positional-argument-self) [link] (http://stackoverflow.com/questions/37289391/missing-1-required-positional-argumentself-when-assigning-a-method-to-a-varia) sollten Sie vorsichtig sein über die Klasseninitialisierung;) –
Sie sind absolut richtig . Ich weiß nicht, warum ich es nicht gesehen habe. Wenn Sie Ihren Kommentar zu einer Antwort machen, werde ich es annehmen. - Vielen Dank! – Dkellygb