Ошибка выглядит, как будто вы пытаетесь отформатировать таблицу, которая выходит за пределы, если фрейм на одной странице. Я протестировал код с помощью таблиц и таблиц LongTable, и он будет показывать данные на нескольких страницах, если вы не пытаетесь одновременно форматировать первую и вторую страницы.
Пример кода:
#!/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()
если вы отформатируете таблицу, скажем:
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),
]
Тогда вы столкнетесь с этой ошибкой. Я бы сказал, что, вероятно, лучший способ - отформатировать таблицу вручную, но я надеюсь, что есть лучшее решение.