2012-03-29 8 views
3

の大きすぎる私は、提出データを表示するLongTablesを使用していますが、行の高さは、より多くのページの高さ、それはあなたがテーブルをフォーマットしようとするようなエラーが見えますReportLabのLongTable LayoutError:ページ

File "c:\edat\19_with_edm\fiods\..\fiods\reporting\pdf_utils.py", line 1497, in build_table 
    doc.build(story, canvasmaker=NumberedCanvas) 

    File "C:\Python27\lib\site-packages\reportlab\platypus\doctemplate.py", line 880, in build 
    self.handle_flowable(flowables) 

    File "C:\Python27\lib\site-packages\reportlab\platypus\doctemplate.py", line 793, in handle_flowable 
    raise LayoutError(ident) 

LayoutError: Flowable <[email protected] 30 rows x 20 cols> with cell(0,0) containing 
'Eq\nLvl\nD'(756.0 x 967.6) too large on page 2 in frame 'edat_table_frame'(756.0 x 504.0*) of template 'edat_page_template' 

答えて

2

でクラッシュしたときに、フレームが1ページ内にある場合は限界を超えています。私は 'Table'と 'LongTable'でコードをテストし、最初のページと2ページ目を同時にフォーマットしようとしない限り、複数ページにわたるデータを表示します。

例コード:

tTableStyle=[ 
    ('SPAN',(0,0),(0,38), #span over the frame limit 
    ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
    ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
    ] 

その後、このエラーが発生します:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from reportlab.platypus import SimpleDocTemplate, Table, LongTable, TableStyle, BaseDocTemplate, Frame, Paragraph, NextPageTemplate, PageTemplate 
from reportlab.lib.pagesizes import letter, inch 
from reportlab.lib import colors 

def testPdf(): 
    doc = BaseDocTemplate("testpdf.pdf",pagesize=letter, 
         rightMargin=72,leftMargin=72, 
         topMargin=72,bottomMargin=18, showBoundary=True) 
width, height = letter 
print width 
print height 

elements = [] 
datas = [] 
for x in range(1,50): 
    datas.append(
     [x,x+1] 
    ) 
t=LongTable(datas) 

tTableStyle=[ 
    ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
    ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
    ] 
t.setStyle(TableStyle(tTableStyle)) 
elements.append(t) 

frameT = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height, id='normal') 

doc.addPageTemplates([PageTemplate(id='OneCol',frames=frameT)]) 

doc.build(elements) 

if __name__ == '__main__': 
    testPdf() 

あなたはのは、言わせてテーブルをフォーマットした場合。おそらく、テーブルを手作業でフォーマットするのが最善の方法だと言えますが、もっと良い解決策があると思っています。

関連する問題