在 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 天的临时许可证。