如果文档中有多个页面,Reportlab 将显示页码和页数

问题描述 投票:0回答:3

任何人都可以展示一个示例,如果文档中有多个页面,如何在 Reportlab 生成的文档上显示“从 Y 开始的 X 页”(如果只有一页,则不显示任何内容)。我知道一些解决方案,但它们都标记页面,无论总页数如何。

python reportlab
3个回答
1
投票

其实这很简单。 Asif 对 SO How to add total page count in PDF using reportlab 的回答帮助了我。唯一需要的是在 save() 函数中添加“if”子句。原始代码在这里: http://code.activestate.com/recipes/576832/

调整后的 save() 函数是:


def save(self):
    """add page info to each page (page x of y)"""
    num_pages = len(self._saved_page_states)
    for state in self._saved_page_states:
        self.dict.update(state)
        ### just a little tweek here
        if num_pages > 1:
            self.draw_page_number(num_pages)
        canvas.Canvas.showPage(self)
    canvas.Canvas.save(self)


0
投票

如果使用报告实验室 .prep 标记语言,则以下内容可用于显示当前页码:

    <drawString x="475" y="30"Page <pageNumber/></drawString>

0
投票

如果您编写 Preppy 模板来生成 RML,然后在页面上生成类似

2 / 14
的内容:

<pageNumber/> / <getName id="last_page" default="X"/>

<pageNumber/>
仅给出当前页码,总页数很棘手。 您必须在故事中的某个位置定义一个
last_page
变量(可能在 fag 末尾以进行正确计算):

<story>
    <!-- bunch of content -->
    <namedString id="last_page"><pageNumber/></namedString>
</story>
© www.soinside.com 2019 - 2024. All rights reserved.