Python代码实现为PDF添加页码(附详细教程)

 更新时间:2026年05月18日 11:44:49   作者:秋天的落叶铺满小路  
在处理合同、报告、论文、技术文档等 PDF 时,给页面添加页码几乎是必备功能,本文将介绍如何使用 Spire.PDF for Python 这个强大的库,通过简单的代码为 PDF 文件自动添加 中文页码 ,希望对大家有所帮助

在处理合同、报告、论文、技术文档等 PDF 时,给页面添加页码几乎是必备功能。传统的 PDF 生成/编辑往往依赖复杂的版式工具;而在 Python 里,借助 Spire.PDF for Python ,我们可以用相对简单的代码,把页码以居中、左对齐、右对齐等方式绘制到 PDF 页脚区域。

本文将介绍如何使用 Spire.PDF for Python 这个强大的库,通过简单的代码为 PDF 文件自动添加 中文页码 。我们会提供居中、左对齐、右对齐三种样式的完整代码,方便你根据实际需求灵活选择。

一、准备工作

首先,安装 Spire.PDF for Python 库:

pip install spire.pdf

安装完成后,在你的 Python 代码中导入所需模块:

from spire.pdf.common import *
from spire.pdf import *

二、核心概念解析

在开始编写代码之前,先了解一下这个库中几个关键类的作用:

类名作用
PdfDocument代表一个 PDF 文档,用于加载、保存和操作文档
PdfPageNumberField代表当前页码,会自动填入当前页的页码
PdfPageCountField代表文档总页数,会自动填入总页数
PdfCompositeField将多个字段组合成一个格式化字符串
PdfTrueTypeFont创建 TrueType 字体,支持中文

简单来说:PdfPageNumberField 和 PdfPageCountField 是“变量”,PdfCompositeField 负责将它们放入模板字符串中。

三、完整代码示例(居中页码)

以下是为 PDF 添加居中对齐中文页码的完整代码,注释详细,便于理解:

from spire.pdf.common import *
from spire.pdf import *
# 1. 创建 PdfDocument 对象并加载 PDF 文件
doc = PdfDocument()
doc.LoadFromFile("示例文档.pdf")
# 2. 使用宋体字体,支持中文显示
font = PdfTrueTypeFont("SimSun", 12.0, PdfFontStyle.Regular, True)
brush = PdfBrushes.get_Black()      # 黑色画笔
pen = PdfPen(brush, 1.0)            # 用于画分隔线的笔
# 3. 创建页码字段和总页数字段
pageNumberField = PdfPageNumberField()
pageCountField = PdfPageCountField()
# 4. 组合成中文格式 "第 X 页 / 共 Y 页"
compositeField = PdfCompositeField(
    font, 
    brush, 
    "第 {0} 页 / 共 {1} 页",         # 中文页码模板
    [pageNumberField, pageCountField]
)
# 5. 设置页边距(单位:点,1点 = 1/72 英寸)
leftMargin = 54.0      # 左边距约 0.75 英寸
rightMargin = 54.0     # 右边距约 0.75 英寸
bottomMargin = 72.0    # 底边距约 1 英寸
# 6. 遍历所有页面,为每一页添加页码
for i in range(doc.Pages.Count):
    page = doc.Pages.get_Item(i)          # 获取当前页
    pageSize = page.Size                   # 获取页面尺寸
    # 6.1 绘制分隔线(可选,让页码区域更美观)
    lineY = pageSize.Height - bottomMargin + 15.0
    page.Canvas.DrawLine(
        pen, 
        leftMargin, 
        lineY, 
        pageSize.Width - rightMargin, 
        lineY
    )
    # 6.2 计算中文页码文本的宽度
    pageNumberSize = font.MeasureString(
        f"第 {i + 1} 页 / 共 {doc.Pages.Count} 页"
    )
    # 6.3 设置页码位置(居中)
    compositeField.Location = PointF(
        (pageSize.Width - pageNumberSize.Width) / 2,   # X 坐标:页面中心
        pageSize.Height - bottomMargin + 18.0           # Y 坐标:页脚位置
    )
    # 6.4 在页面上绘制页码
    compositeField.Draw(page.Canvas, 0.0, 0.0)
# 7. 保存并释放资源
doc.SaveToFile("中文页码.pdf")
doc.Dispose()

四、左对齐和右对齐的实现

只需修改 compositeField.Location 的 X 坐标即可切换对齐方式:

4.1 左对齐页码

# 左对齐:X 坐标 = 左边距
compositeField.Location = PointF(
    leftMargin,                                    # 靠左
    pageSize.Height - bottomMargin + 18.0
)

效果示例:“第 1 页 / 共 10 页” 显示在页面左下角。

4.2 右对齐页码

# 右对齐:X 坐标 = 页面宽度 - 文本宽度 - 右边距
compositeField.Location = PointF(
    pageSize.Width - pageNumberSize.Width - rightMargin,   # 靠右
    pageSize.Height - bottomMargin + 18.0
)

效果示例:“第 1 页 / 共 10 页” 显示在页面右下角。

五、更多中文页码样式

除了「第 X 页 / 共 Y 页」,你还可以根据喜好使用其他中文样式:

5.1 简洁版

compositeField = PdfCompositeField(
    font, brush, "{0} / {1}", 
    [pageNumberField, pageCountField]
)
# 显示效果:1 / 10

5.2 带装饰线版

compositeField = PdfCompositeField(
    font, brush, "- {0} / {1} -", 
    [pageNumberField, pageCountField]
)
# 显示效果:- 1 / 10 -

5.3 完整中文版(带“第”和“共”)

compositeField = PdfCompositeField(
    font, brush, "第 {0} 页(共 {1} 页)", 
    [pageNumberField, pageCountField]
)
# 显示效果:第 1 页(共 10 页)

5.4 纯页码版(无总页数)

# 只需要页码,不需要总页数
compositeField = PdfCompositeField(
    font, brush, "第 {0} 页", 
    [pageNumberField]
)
# 显示效果:第 1 页

六、常用中文字体参考

字体名称说明适用场景
SimSun宋体正式文档、报告、论文
SimHei黑体标题、强调内容
Microsoft YaHei微软雅黑屏显阅读、现代风格
KaiTi楷体文艺风格、书法类文档
FangSong仿宋公文、正式函件
# 示例:使用微软雅黑字体
font = PdfTrueTypeFont("Microsoft YaHei", 12.0, PdfFontStyle.Regular, True)

七、参数调优指南

7.1 边距调整

如果页码位置不理想,可以调整三个边距值:

leftMargin = 54.0      # 增大 → 页码右移(左对齐时),或增加左右空白区
rightMargin = 54.0     # 增大 → 页码左移(右对齐时)
bottomMargin = 72.0    # 增大 → 页码上移,减小 → 页码下移

7.2 分隔线和页码的垂直位置微调

代码中有两个偏移量可以调整:

# 分隔线的垂直位置(当前为 bottomMargin 上方 15 点)
lineY = pageSize.Height - bottomMargin + 15.0

# 页码的垂直位置(当前为 bottomMargin 上方 18 点)
compositeField.Location = PointF(x, pageSize.Height - bottomMargin + 18.0)
  • 增大这两个值 → 分隔线和页码向下移动
  • 减小这两个值 → 分隔线和页码向上移动

7.3 字体大小调整

# 将 12 号字改为 14 号字
font = PdfTrueTypeFont("SimSun", 14.0, PdfFontStyle.Regular, True)

字体改变后,页码文本的尺寸会自动重新计算,位置会自适应。

八、常见问题与解决方案

Q1:中文显示为乱码怎么办?
A:确保使用的是支持中文的字体,如 SimSun(宋体)、Microsoft YaHei(微软雅黑)等,不要用 Times New Roman。

Q2:页码出现在页眉而不是页脚?

A:检查 bottomMargin 和 Y 坐标的计算公式,Y 值越大越靠近页面底部。

Q3:页码被页面内容遮挡?

A:增大 bottomMargin 的值,为页码预留更多空间。

Q4:如何跳过封面页不添加页码?

A:修改循环的起始索引,例如从第 2 页开始:

for i in range(1, doc.Pages.Count):  # 从索引 1(第2页)开始

Q5:只想给部分页面添加页码?

A:在循环中添加条件判断即可:

for i in range(doc.Pages.Count):
    if i >= 2 and i <= 10:  # 只给第3页到第11页添加页码
        # 添加页码的代码

九、总结

通过 Spire.PDF for Python,我们只需要几十行代码就能为 PDF 批量添加中文页码,支持居中、左对齐、右对齐三种样式。

核心步骤回顾:

  1. 加载 PDF 文档
  2. 创建页码字段和总页数字段
  3. 使用组合字段定义中文格式模板
  4. 遍历每一页,计算位置并绘制
  5. 保存结果

这个方法不仅效率高,而且可重复使用——无论文档有多少页,代码都能完美处理。希望这篇文章对你有帮助,快去试试为你的 PDF 文档添加专业的中文页码吧!

到此这篇关于Python代码实现为PDF添加页码(附详细教程)的文章就介绍到这了,更多相关Python PDF添加页码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 轻松实现可视化大屏

    Python 轻松实现可视化大屏

    对于从事数据领域的小伙伴来说,当需要阐述自己观点、展示项目成果时,我们需要在最短时间内让别人知道你的想法。我相信单调乏味的语言很难让别人快速理解。最直接有效的方式就是将数据进行可视化展现
    2022-01-01
  • 基于PyQt5制作一个截图翻译工具

    基于PyQt5制作一个截图翻译工具

    这篇文章主要为大家介绍了如何利用PyQt5制作一个简单的截图翻译工具,具有截图功能、翻译功能和文字识别OCR,需要的可以参考一下
    2022-05-05
  • 一文学会Python列表list的使用

    一文学会Python列表list的使用

    这篇文章主要为大家介绍了Python列表list的使用全面解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python实现注册登录功能

    Python实现注册登录功能

    这篇文章主要为大家详细介绍了Python实现注册登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • selenium中BasicAuth认证弹框处理

    selenium中BasicAuth认证弹框处理

    本文主要介绍了selenium中BasicAuth认证弹框处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • python新一代网络请求库之python-httpx库操作指南

    python新一代网络请求库之python-httpx库操作指南

    Python 的 httpx 包是一个用于 HTTP 交互的一个优秀且灵活的模块,下面这篇文章主要给大家介绍了关于python新一代网络请求库之python-httpx库的相关资料,需要的朋友可以参考下
    2022-09-09
  • Python高效实现PDF批量转Word的示例代码

    Python高效实现PDF批量转Word的示例代码

    这篇文章主要为大家详细介绍了如何使用Python开发一个100%离线的PDF批量转Word软件,同时确保高效率和用户界面的流畅性,感兴趣的小伙伴可以了解下
    2025-07-07
  • Python计算字符宽度的方法

    Python计算字符宽度的方法

    这篇文章主要介绍了Python计算字符宽度的方法,结合实例形式较为详细的分析了Python针对字符宽度的计算方法,需要的朋友可以参考下
    2016-06-06
  • python pyecharts库的用法大全

    python pyecharts库的用法大全

    这篇文章主要介绍了python pyecharts库的用法大全,pyecharts 是一个用于生成 Echarts 图表的类库,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-04-04
  • Python实现轻松合并doc为txt的示例代码

    Python实现轻松合并doc为txt的示例代码

    这篇文章主要为大家详细介绍了如何利用Python编程语言和wxPython模块,打开指定文件夹中的DOC文档,并将它们的内容合并成一个便捷的TXT文档,需要的可以参考下
    2024-03-03

最新评论