0
私はpythonでreportlabを使用してpdfレポートを生成しようとしていますが、いくつかのページに沿って大きなテーブルを分割しています。問題は、それが私のフッタを上書きし、私はページテンプレート内のフレームでそれを制限したいと思います。レポートライブラリのページテンプレートを動的に繰り返します
tableTemplate
新しいページが生成されるたびに、テーブルの長さやページ内の行数がわからないことを考慮して、どのように使用できますか?私は、テンプレートに新しいページが生成されるたびに繰り返す方法を発見していないが、私は、ドキュメントのbottomMargin
を増加し、マージンの外にフッターを配置することによって、問題を解決し
def report_pdf(self):
buffer = self.buffer
doc = SimpleDocTemplate(buffer,
rightMargin=30,
leftMargin=30,
topMargin=30,
bottomMargin=0,
pagesize=self.pagesize)
elements = []
table_data = gather_table_data()
long_table = Table(table_data)
elements.append(long_table)
frameMain = Frame(x1=doc.leftMargin,
y1=doc.topMargin,
width=doc.width,
height=doc.height)
tableFrame = Frame(x1=doc.leftMargin,
y1=doc.topMargin,
width=doc.width,
height=doc.height-50,
showBoundary=1)
mainTemplate = PageTemplate(id='main', frames=[frameMain])
tableTemplate = PageTemplate(id='table', frames=[tableFrame])
doc.addPageTemplates([mainTemplate, tableTemplate])
doc.build(elements, onFirstPage=footer, onLaterPages=footer)
pdf = buffer.getvalue()
buffer.close()
return pdf