Python 根据条件添加标题

Python 根据条件添加标题,python,reportlab,Python,Reportlab,我正在使用reportlab生成一个PDF文档,其中包含两种类型的报告 请假设报告为r1和r2。每份报告可能有2-3页以上。所以我想在每个报告的第二页添加一个类似标题的文本 例如,在r1报告页面中添加“r1报告继续…”并在 r2报告添加“r2报告继续…”我该怎么做 目前,我正在创建一个元素列表,并将其传递给模板构建函数。因此,我无法确定正在处理哪个报告 例如 elements = [] elements.append(r1) ... ..... elements.append(r2) doc.b

我正在使用reportlab生成一个PDF文档,其中包含两种类型的报告

请假设报告为r1和r2。每份报告可能有2-3页以上。所以我想在每个报告的第二页添加一个类似标题的文本

例如,在r1报告页面中添加“r1报告继续…”并在 r2报告添加“r2报告继续…”我该怎么做

目前,我正在创建一个元素列表,并将其传递给模板构建函数。因此,我无法确定正在处理哪个报告

例如

elements = []
elements.append(r1)
...
.....
elements.append(r2)
doc.build(elements)

最后我设法解决了它。但我不确定这是不是一个合适的方法。 非常感谢谁提供了我从哪里创建解决方案的答案

正如在grc的回答中一样,我创建了一个后向流回调函数

def afterFlowable(self,flowable):

    if hasattr(flowable, 'cReport'):

        cReport = getattr(flowable, 'cReport')
        self.cReport = cReport
然后,在为r1报告添加数据时,将创建一个自定义属性

elements.append(PageBreak())
elements[-1].cReport = 'r1' 
为r2报告添加数据时使用相同的代码

elements.append(PageBreak())
elements[-1].cReport = 'r2' 
然后在模板的onPage函数中

template = PageTemplate(id='test', frames=frame, onPage=headerAndFooter)

def headerAndFooter(canvas, doc):

        canvas.saveState()

        if cReport == 'r1':
            Ph = Paragraph("""<para>r1 Report (continued)</para>""",styleH5)
            w, h = Ph.wrap(doc.width, doc.topMargin)
            Ph.drawOn(canvas, doc.leftMargin, doc.height+doc.topMargin)
template=PageTemplate(id='test',frames=frame,onPage=headerAndFooter)
def headerAndFooter(画布、文档):
canvas.saveState()
如果cReport=='r1':
Ph=段落(“r1报告(续)”,样式H5)
w、 h=Ph包裹(文件宽度、文件顶部边距)
博士绘图(画布,文档左边距,文档高度+文档顶边距)
请注意,我只是复制和粘贴部分代码