使用ReportLab显示页数

时间:2009-03-12 09:05:35

标签: python reportlab

我正在尝试将一个简单的“y页面x”添加到使用ReportLab创建的报告中。我发现this old post关于它,但也许六年之后出现了一些更直接的内容? ^^;
我也发现了this recipe,但是当我使用它时,生成的PDF会丢失图像..

3 个答案:

答案 0 :(得分:11)

我能够从ActiveState实现NumberedCanvas方法。这很容易做,并没有改变我现有的代码。我所要做的就是添加NumberedCanvas类并在构建我的doc时添加canvasmaker属性。我还改变了显示“x of y”的位置的测量值:

self.doc.build(pdf)

成了

self.doc.build(pdf, canvasmaker=NumberedCanvas) 

doc 是一个BaseDocTemplate, pdf 是我的可流动元素列表。

答案 1 :(得分:4)

使用doc.multiBuild

并在页眉方法中(由“onLaterPages =”定义):

global TOTALPAGES
if doc.page > TOTALPAGES:
    TOTALPAGES = doc.page
else:
    canvas.drawString(270 * mm, 5 * mm, "Seite %d/%d" % (doc.page,TOTALPAGES))

答案 2 :(得分:1)

为您挖掘一些代码,我们使用:

SimpleDocTemplate(...).build(self.story,
                             onFirstPage=self._on_page,
                             onLaterPages=self._on_page)

现在self._on_page是一个为每个页面调用的方法,如:

def _on_page(self, canvas, doc):
    # ... do any additional page formatting here for each page
    print doc.page