2015-09-10 8 views
2

Я использую Reportlab для генерации таблиц в формате pdf. Тем не менее, я дошел до того, что мне нужно включить несколько таблиц в один и тот же файл, где некоторые из этих таблиц пересекают несколько страниц. Я думаю, что таблицы, которые пересекают несколько страниц, порождают ошибки для меня.Reportlab создает несколько таблиц

Я использовал формат от этого ответа, чтобы основать свой код на: Multiple tables (5) one one page using ReportLab

код, который выдает ошибку:

from reportlab.lib import colors 
from reportlab.lib.pagesizes import letter, inch 
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle 

doc = SimpleDocTemplate("test.pdf") 
elements = [] 

data1= [['00', '01', '02', '03', '04','10', '11', '12', '13', '14'], 
    ['10', '11', '12', '13', '14', '10', '11', '12', '13', '14'], 
    ['20', '21', '22', '23', '24', '10', '11', '12', '13', '14'], 
    ['30', '31', '32', '33', '34', '10', '11', '12', '13', '14']] 

t1=Table(data1) 
t1.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
         ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
         ])) 

data2= [[x] for x in range(40)] 

t2=Table(data2) 
t2.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
         ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
         ])) 

data = [[t1],[t2]] 
overallTable = Table(data) 
elements.append(overallTable)  
doc.build(elements) 

ошибка, полученная от работы:

Traceback (most recent call last): 
    File "", line 267, in <module> 
    Func1(List) 
    File "", line 207, in Func1 
    doc.build([overallTable]) 
    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 829, in handle_flowable 
    raise LayoutError(ident) 
reportlab.platypus.doctemplate.LayoutError: Flowable <[email protected] 1 rows x 4 cols(tallest row 6648)> with cell(0,0) containing 
"<[email protected] 10 rows x 3 cols(tallest row 18)> with cell(0,0) containing\n'Local'"(1100.24 x 6648), tallest cell 6648.0 points, too large on page 2 in frame 'normal'(439.27559055118104 x 685.8897637795275*) of template 'Later' 

I нашел это решение аналогичной ошибкой https://stackoverflow.com/a/27580676/4033176, но я никогда не определял проставки.

Существует ли постоянный способ использования Reportlab, чтобы иметь возможность делать PDF-файл с несколькими таблицами, где некоторые из них длиннее страницы? (кроме объединения файлов PDF)

+0

А на самом деле бедные обходным сейчас это: http://stackoverflow.com/questions/9841546/generating-a-pdf-of- длинные столы-с-ReportLab – Programmer

ответ

2

Проблема в том, что вы вставляете таблицы. Это означает, что длинная таблица t2 делает одну ячейку длиннее страницы - это то, что дает вам ошибку, а не длиннее страницы.

Заменить

data = [[t1],[t2]] 
overallTable = Table(data) 
elements.append(overallTable) 

с

elements.append(t1) 
elements.append(t2) 
Смежные вопросы