使用ReportLab将页码和总页数正确添加到PDF中

2024-10-03 15:23:51 发布

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

我正在尝试创建一个文件,其页码格式为“第x页,共y页”。 我已经尝试过NumberedCanvas方法(http://code.activestate.com/recipes/576832/和论坛https://groups.google.com/forum/#!topic/reportlab-users/9RJWbrgrklI),但这与我的可单击目录(https://www.reportlab.com/snippets/13/)冲突。在

我从这篇文章http://two.pairlist.net/pipermail/reportlab-users/2002-May/000020.html中了解到,使用表单可能是可能的,但这方面的例子非常稀少,而且缺乏信息性。 有人知道如何使用表单(或修复NumberedCanvas方法)来实现这一点吗在


Tags: 文件方法httpscomhttp表单格式code
1条回答
网友
1楼 · 发布于 2024-10-03 15:23:51

所以我最后把文档渲染了两次。只需要几秒钟,但效果很好!在

class MyDocTemplate(BaseDocTemplate):
    def generate(self, story):
        self.multiBuild(story[:])
        # Decrease by one because canvas is at the page after the last
        self.page_count = self.canv.getPageNumber() - 1
        self.multiBuild(story[:])


class MyPageTemplate(PageTemplate):
    def onPage(self, canvas, doc):
        if getattr(doc, 'page_count', None) is not None:
            canvas.drawString(x, y, canvas.getPageNumber(), doc.page_count)

不是百分之百的快乐,但有时你会得到你能得到的!在

请确保不要将相同的对象传递给第一个和第二个多重生成,因为report lab在第一个生成期间向它们添加了一些属性,这将在第二个生成中导致错误。在

我有点担心,在构建之后画布对象可能会被销毁或重置,所以如果将来有人想使用它,请小心。在

相关问题 更多 >