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