2016-09-17 33 views
2

二重印刷されるように2ページのフォームを設計しています。私は改ページを追加した後、私は次のエラーを取得する:改ページ後のReportlabエラー

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' 

ここに私のコードです:

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) 

私はReportLabのモジュールを変更しようとしたが、私は成功しませんでしたが。誰にもアイデアはありますか?

答えて

2

私はこのエラーを理解しようとしましたが、問題があると思います。 doc = SimpleDocTemplate("key_card.pdf", pagesize=A4)。この問題は引数 "key_card.pdf"にある可能性があります。私はわからない

編集:たぶん、BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)問題がdoc.buildの要素(要素)

SOLUTIONに接続されている「フロアブル」の引数についてです - > elements.append(改ページ)が要素でなければなりません。 append(PageBreak())

+0

pageTemplateとFrameを作成してコードを変換し、BaseDocTemplateを使用して、まったく同じエラーを返しました。改ページをコメントアウトすると、すべてエラーなしで印刷されます(ページ改行を除く)。 – Dkellygb

+0

私は 'elements.append(PageBreak)'は 'elements.append(PageBreak())'でなければならないと思っています。私はgoogled "欠けている1つの位置的な引数: '自己'"を発見し、これらの[リンク](http://stackoverflow.com/questions/17534345/typeerror-missing-1-required-positional-argument-self)[リンク]( http://stackoverflow.com/questions/37289391/missing-1-required-positional-argumentself-when-assigning-a-method-to-a-varia)あなたはクラスの初期化に注意する必要があります;) –

+0

あなたは間違いありません。なぜ私はそれを見ていないのかわかりません。あなたがあなたのコメントを答えたら、私はそれを受け入れます。 - ありがとう! – Dkellygb