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

时间:2014-08-06 15:52:53

标签: python pdf matplotlib

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

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

这很有效。但有没有办法为PDF中的每个页面添加页码?

感谢。

3 个答案:

答案 0 :(得分:4)

这样的事情:

from matplotlib.backends.backend_pdf import PdfPages
pp = PdfPages('output.pdf')
for n, fig in enumerate(figs):
    fig.text(4.25/8.5, 0.5/11., str(n+1), ha='center', fontsize=8)
    pp.savefig(fig)
pp.close()

答案 1 :(得分:1)

使用reportlib和PyPDF(基于this)的不错的解决方案:

Exception thrown at 0x004C302F in Program.exe: 0xC0000005: Access violation reading location 0x00320005. 

答案 2 :(得分:0)

PyPDF2pdfrw可以覆盖两个PDF(例如,您可以生成仅为页码的PDF,并使用它来为图像添加水印)。 pdfrw有watermark example使用单个水印页面,但可以很容易地修改它以使用一组水印页面,每个页面编号一个。

如果您想获得更好的体验,可以使用reportlab动态生成这些页面。

pdfrw还有一个工具,允许您将PDF页面导入reportlab,就像它是一个图像一样。有几个例子可以动态地做到这一点 - here是一个很好的起点。

最后,rst2pdf(虽然维护得不是很好但适用于简单的情况)也允许您将PDF作为图像导入 - 它使用pdfrw和reportlab - 因此您可以轻松地使用restructuredText创建文档你的图像嵌入。 AFAIK,与rst2pdf发布版本一起使用的最佳报告是2.7。

(免责声明:我是pdfrw作者并为rst2pdf做出了贡献。)