在reportlab中动态重复页面模板

2024-06-16 08:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python中的reportlab生成pdf报告,我有一个大表,沿着几个页面拆分。问题是它覆盖了我的页脚,我想用一个页面模板中的框架来限制它。在

考虑到我不知道表的长度或页面中的行数,如何在每次生成新页面时使用tableTemplate?在

这是我的代码:

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

Tags: selfdatadocpdfbuffertable页面elements
1条回答
网友
1楼 · 发布于 2024-06-16 08:28:10

我还没有找到在每次生成新页面时都重复模板的方法,但是我通过增加文档的bottomMargin并将页脚放在页边空白处来解决这个问题。考虑到页脚是直接在文档画布上绘制的,它不受页边空白的影响,而表作为一个可流动的,受到文档边距的限制,因此不能覆盖页脚。在

相关问题 更多 >