gpt4 book ai didi

python - 如何使用 python 和 matplotlib 将页码添加到 PDF 文件?

转载 作者:太空狗 更新时间:2023-10-30 02:45:18 24 4
gpt4 key购买 nike

我正在使用 matplotlib 中的 PdfPages,我可以遍历每个图形对象并将每个对象保存为同一 PDF 中的单独页面:

from matplotlib.backends.backend_pdf import PdfPages
pp = PdfPages('output.pdf')
for fig in figs:
pp.savefig(fig)
pp.close()

这很好用。但是有没有办法为 PDF 中的每一页添加页码?

谢谢。

最佳答案

使用 reportlib 和 PyPDF 的一个很好的解决方案(基于 this ):

import os

from PyPDF4.pdf import PdfFileReader, PdfFileWriter
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas


def create_page_pdf(num, tmp):
c = canvas.Canvas(tmp)
for i in range(1, num + 1):
c.drawString((210 // 2) * mm, (4) * mm, str(i))
c.showPage()
c.save()


def add_page_numgers(pdf_path):
"""
Add page numbers to a pdf, save the result as a new pdf
@param pdf_path: path to pdf
"""
tmp = "__tmp.pdf"

writer = PdfFileWriter()
with open(pdf_path, "rb") as f:
reader = PdfFileReader(f, strict=False)
n = reader.getNumPages()

# create new PDF with page numbers
create_page_pdf(n, tmp)

with open(tmp, "rb") as ftmp:
number_pdf = PdfFileReader(ftmp)
# iterarte pages
for p in range(n):
page = reader.getPage(p)
numberLayer = number_pdf.getPage(p)
# merge number page with actual page
page.mergePage(numberLayer)
writer.addPage(page)

# write result
if writer.getNumPages():
newpath = pdf_path[:-4] + "_numbered.pdf"
with open(newpath, "wb") as f:
writer.write(f)
os.remove(tmp)

关于python - 如何使用 python 和 matplotlib 将页码添加到 PDF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164871/

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