gpt4 book ai didi

python - 使用 ReportLab 向 PDF 正确添加页码和总页数

转载 作者:行者123 更新时间:2023-12-01 01:44:47 25 4
gpt4 key购买 nike

我正在尝试创建一个页码格式为“第 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 方法?)

最佳答案

此页面 ( http://www.blog.pythonlibrary.org/2013/08/12/reportlab-how-to-add-page-numbers/ ) 解释了一个好方法。我做了一些更改以更好地利用继承。

它创建一个继承自 ReportLab Canvas 类的新类。

这是我修改后的代码:

from reportlab.lib.units import mm
from reportlab.pdfgen.canvas import Canvas


class NumberedPageCanvas(Canvas):
"""
http://code.activestate.com/recipes/546511-page-x-of-y-with-reportlab/
http://code.activestate.com/recipes/576832/
http://www.blog.pythonlibrary.org/2013/08/12/reportlab-how-to-add-page-numbers/
"""

def __init__(self, *args, **kwargs):
"""Constructor"""
super().__init__(*args, **kwargs)
self.pages = []

def showPage(self):
"""
On a page break, add information to the list
"""
self.pages.append(dict(self.__dict__))
self._startPage()

def save(self):
"""
Add the page number to each page (page x of y)
"""
page_count = len(self.pages)

for page in self.pages:
self.__dict__.update(page)
self.draw_page_number(page_count)
super().showPage()

super().save()

def draw_page_number(self, page_count):
"""
Add the page number
"""
page = "Page %s of %s" % (self._pageNumber, page_count)
self.setFont("Helvetica", 9)
self.drawRightString(179 * mm, -280 * mm, page)

要使用它,只需在创建新文件时将 Canvas 更改为 NumberedCanvas 即可。保存文件时,会添加数字。

关于python - 使用 ReportLab 向 PDF 正确添加页码和总页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51498663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com