在 pdf 文档中添加页码增强了其组织性和可读性,使读者更容易浏览内容。不管是报告、操作手册还是电子书,页码都能为文档增添专业感,并帮助保持信息流的连贯性。这个过程涉及确定页码在页脚或页眉中的位置、对齐方式和样式。
本文将介绍如何使用 spire.pdf for python 在 pdf 文档的页脚添加页码。
安装 spire.pdf for python
本教程需要 spire.pdf for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 windows 中。
pip install spire.pdf
如果您不确定如何安装,请参考此教程: 如何在 windows 中安装 spire.pdf for python。
pdf 中的坐标系
在使用 spire.pdf for python 修改 pdf 文档时,坐标系的原点位于页面的左上角。x 轴向右延伸,y 轴向下延伸。
页码通常位于页眉或页脚。因此,在确定页码位置时,需要考虑页面的大小和页边距。
创建页码的类和方法
spire.pdf for python 提供了 pdfpagenumberfield 和 pdfpagecountfield 类,用以获取当前页面的页码和 pdf 文档的总页数。它们可以合并成一个 pdfcompositefield,将输出格式化为 "page x of y",其中 x 表示当前页码,y 表示总页数。
要将 pdfcompositefield 定位到页面上,可以使用 location 属性,并通过 draw() 方法渲染它。
在 pdf 页脚添加左对齐的页码
要在页脚添加左对齐的页码,需要考虑左侧和底部的页面边距以及页面的高度。例如,可以使用坐标(leftmargin, pageheight - bottommargin smallnumber)。这样可以确保页码与文本的左侧对齐,同时与内容和页面边缘保持适当的距离。
以下是在 pdf 页脚中添加左对齐页码的步骤:
- 创建一个 pdfdocument 类的对象。
- 从文件路径加载一个 pdf 文件。
- 创建一个 pdfpagenumberfield 对象和一个 pdfpagecountfield 对象。
- 创建一个 pdfcompositefield 对象,将页码字段和页数字段合并为一个字符串。
- 通过 pdfcompositefield.location 属性设置合成字段的位置,确保页码与文本的左侧对齐。
- 遍历文档中的每一页,并在每一页的指定位置绘制合成字段。
- 将修改后的文档保存为新的 pdf 文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 pdfdocument 对象
doc = pdfdocument()
# 加载一个 pdf 文件
doc.loadfromfile("/示例文档.pdf")
# 创建字体和画笔
font = pdftruetypefont("times new roman", 12.0, pdffontstyle.regular, true)
brush = pdfbrushes.get_black()
pen = pdfpen(brush, 1.0)
# 创建一个 pdfpagenumberfield 对象和一个 pdfpagecountfield 对象
pagenumberfield = pdfpagenumberfield()
pagecountfield = pdfpagecountfield()
# 创建一个 pdfcompositefield 对象,将页码字段和页数字段合并为一个字符串
compositefield = pdfcompositefield(font, brush, "page {0} of {1}", [pagenumberfield, pagecountfield])
# 获取页面尺寸
pagesize = doc.pages[0].size
# 设置页边距
leftmargin = 54.0
rightmargin = 54.0
bottommargin = 72.0
# 设置组合字段的位置
compositefield.location = pointf(leftmargin, pagesize.height - bottommargin 18.0)
# 遍历文档内的所有页面
for i in range(doc.pages.count):
# 获取当前页面
page = doc.pages[i]
# 在页面的指定位置画一条线
page.canvas.drawline(pen, leftmargin, pagesize.height - bottommargin 15.0, pagesize.width - rightmargin, pagesize.height - bottommargin 15.0)
# 在页面上绘制组合字段
compositefield.draw(page.canvas, 0.0, 0.0)
# 保存修改后的 pdf 文档
doc.savetofile("/左对齐页码.pdf")
doc.dispose()
在 pdf 页脚添加居中对齐的页码
要将页码定位在页脚的中央,首先需要测量页码本身的宽度。得到这个宽度后,可以通过公式 (pagewidth - pagenumberwidth) / 2 计算合适的 x 坐标。这确保了页码在页脚内水平居中。
将页码居中对齐添加到 pdf 页脚的步骤如下:
- 创建一个 pdfdocument 类的对象。
- 从文件路径加载一个 pdf 文件。
- 创建一个 pdfpagenumberfield 对象和一个 pdfpagecountfield 对象。
- 创建一个 pdfcompositefield 对象,将页码字段和页数字段合并为一个字符串。
- 通过 pdfcompositefield.location 属性设置合成字段的位置,确保页码正好在页脚的中间位置。
- 遍历文档中的每一页,并在每一页的指定位置绘制合成字段。
- 保存修改后的 pdf 文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 pdfdocument 对象
doc = pdfdocument()
# 加载一个 pdf 文件
doc.loadfromfile("/示例文档.pdf")
# 创建字体和画笔
font = pdftruetypefont("times new roman", 12.0, pdffontstyle.regular, true)
brush = pdfbrushes.get_black()
pen = pdfpen(brush, 1.0)
# 创建一个 pdfpagenumberfield 对象和一个 pdfpagecountfield 对象
pagenumberfield = pdfpagenumberfield()
pagecountfield = pdfpagecountfield()
# 创建一个 pdfcompositefield 对象,将页码字段和页数字段合并为一个字符串
compositefield = pdfcompositefield(font, brush, "page {0} of {1}", [pagenumberfield, pagecountfield])
# 取页面尺寸
pagesize = doc.pages[0].size
# 设置页边距
leftmargin = 54.0
rightmargin = 54.0
bottommargin = 72.0
# 遍历文档内的所有页面
for i in range(doc.pages.count):
# 获取当前页面
page = doc.pages[i]
# 获取页面大小
pagesize = doc.pages[i].size
# 在指定位置绘制一条线
page.canvas.drawline(pen, leftmargin, pagesize.height - bottommargin 15.0, pagesize.width - rightmargin, pagesize.height - bottommargin 15.0)
# 获取页码的字符串尺寸
pagenumbersize = font.measurestring("page {} of {}".format(i 1, doc.pages.count))
# 设置组合字段的位置
compositefield.location = pointf((pagesize.width - pagenumbersize.width)/2, pagesize.height - bottommargin 18.0)
# 在页面上绘制组合字段
compositefield.draw(page.canvas, 0.0, 0.0)
# 将结果保存到 pdf 文件中
doc.savetofile("/居中页码.pdf")
doc.dispose()
在 pdf 页脚添加右对齐的页码
要将页码右对齐添加到页脚,首先测量页码的宽度。然后,使用公式 pagewidth - pagenumberwidth - rightmargin 计算 x 坐标。这确保了页码与文本的右侧对齐。
将页码右对齐添加到 pdf 页脚的步骤如下:
- 创建一个 pdfdocument 类的对象。
- 从文件路径加载一个 pdf 文件。
- 创建一个 pdfpagenumberfield 对象和一个 pdfpagecountfield 对象。
- 创建一个 pdfcompositefield 对象,将页码字段和页数字段合并为一个字符串。
- 通过 pdfcompositefield.location 属性设置合成字段的位置,确保页码与文本的右侧对齐。
- 遍历文档的每一页,在每一页的指定位置绘制合成字段。
- 保存修改后的文档为新的 pdf 文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 pdfdocument 对象
doc = pdfdocument()
# 加载一个 pdf 文件
doc.loadfromfile("/示例文档.pdf")
# 创建字体和画笔
font = pdftruetypefont("times new roman", 12.0, pdffontstyle.regular, true)
brush = pdfbrushes.get_black()
pen = pdfpen(brush, 1.0)
# 创建一个 pdfpagenumberfield 对象和一个 pdfpagecountfield 对象
pagenumberfield = pdfpagenumberfield()
pagecountfield = pdfpagecountfield()
# 创建一个 pdfcompositefield 对象,将页码字段和页数字段合并为一个字符串
compositefield = pdfcompositefield(font, brush, "page {0} of {1}", [pagenumberfield, pagecountfield])
# 获取页面尺寸
pagesize = doc.pages[0].size
# 设置页边距
leftmargin = 54.0
rightmargin = 54.0
bottommargin = 72.0
# 设置组合字段的位置
compositefield.location = pointf(leftmargin, pagesize.height - bottommargin 18.0)
# 遍历文档的所有页面
for i in range(doc.pages.count):
# 获取当前页面
page = doc.pages[i]
# 获取该页面的大小
pagesize = doc.pages[i].size
# 在指定位置绘制一条线
page.canvas.drawline(pen, leftmargin, pagesize.height - bottommargin 15.0, pagesize.width - rightmargin, pagesize.height - bottommargin 15.0)
# 测量页码字段的大小
pagenumbersize = font.measurestring("page {} of {}".format(i 1, doc.pages.count))
# 设置组合字段的位置
compositefield.location = pointf(pagesize.width - pagenumbersize.width - rightmargin, pagesize.height - bottommargin 18.0)
# 页面上绘制组合字段
compositefield.draw(page.canvas, 0.0, 0.0)
# 保存修改后的 pdf 文件
doc.savetofile("/右对齐页码.pdf")
doc.dispose()*
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。