13

我正在尝试在使用 ReportLab 制作的报告中添加一个简单的“y 页 x”。我发现了这篇关于它的旧帖子,但也许六年后出现了更直接的东西?^^;
我也找到了这个食谱,但是当我使用它时,生成的 PDF 缺少图像..

4

3 回答 3

11

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

self.doc.build(pdf)

变成了

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

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

于 2009-03-12T18:54:30.960 回答
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))
于 2011-10-13T18:32:55.823 回答
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
于 2009-03-12T11:29:03.463 回答