python-docx 页眉页脚操作

部署运行你感兴趣的模型镜像

页眉页脚是 Word 文档版式设计的重要组成部分,用于展示页码、文档标题、日期等固定信息。

一、页眉页脚的基本概念

  • 页眉(Header):页面顶部的固定区域
  • 页脚(Footer):页面底部的固定区域
  • 节(Section)关联:页眉页脚默认与所属节绑定,不同节可设置不同的页眉页脚
  • 继承关系:新节默认继承前一节的页眉页脚设置,可通过配置解除关联

每个节包含 3 种页眉页脚(对应不同页面):

  • 首页页眉页脚(仅第一节首页生效)
  • 奇数页页眉页脚
  • 偶数页页眉页脚

二、访问与创建页眉页脚

1. 访问页眉页脚对象

通过节对象的 headerfooter 属性访问:

from docx import Document

doc = Document()
section = doc.sections[0]  # 获取第一个节

# 访问页眉页脚
header = section.header
footer = section.footer

2. 向页眉页脚添加内容

页眉页脚本质是特殊的文本容器,支持添加段落、图片等内容:

# 向页眉添加文本
header.add_paragraph("这是页眉内容 - 文档标题")

# 向页脚添加页码(简单方式)
footer.add_paragraph("页码:1")

三、页眉页脚的精细化控制

1. 解除与前一节的关联

默认情况下,新节的页眉页脚会继承前一节的设置,如需独立设置需解除关联:

section = doc.sections[1]  # 第二个节
# 解除页眉与前一节的关联
section.header.is_linked_to_previous = False
# 解除页脚与前一节的关联
section.footer.is_linked_to_previous = False

2. 首页不同设置

让文档首页使用不同的页眉页脚(常用于封面不显示页码):

section = doc.sections[0]
# 启用首页不同设置
section.different_first_page_header_footer = True
# 访问首页页眉页脚
first_page_header = section.first_page_header
first_page_footer = section.first_page_footer
# 首页页眉添加标题
first_page_header.add_paragraph("文档封面")
# 首页页脚为空(不显示页码)
first_page_footer.add_paragraph("")

3. 奇偶页不同设置

为奇数页和偶数页设置不同的页眉页脚(常用于书籍排版):

# 启用奇偶页不同(需在文档级别设置)
doc.settings.odd_and_even_pages_header_footer = True

section = doc.sections[0]
# 奇数页页眉
odd_header = section.odd_page_header
odd_header.add_paragraph("奇数页页眉 - 章节名")
# 偶数页页眉
even_header = section.even_page_header
even_header.add_paragraph("偶数页页眉 - 书名")

四、自动编号与格式定制

1. 添加自动页码

使用 add_page_number() 方法插入动态页码(自动随页数变化):

from docx.enum.header_footer import WD_HEADER_FOOTER

# 在页脚居中位置添加页码
footer = section.footer
footer.paragraphs[0].alignment = WD_HEADER_FOOTER.CENTER  # 居中对齐
footer.add_page_number()  # 默认格式:页码/总页数

2. 自定义页码格式

通过 PageNumber 对象设置页码样式(数字、罗马数字等):

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

# 添加页码并设置格式
page_num = footer.add_page_number()
page_num.format = "Page {PAGE} of {NUMPAGES}"  # 格式字符串
page_num.paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT  # 右对齐

常用页码格式占位符:

  • {PAGE}:当前页码
  • {NUMPAGES}:总页数
  • {SECTION}:当前节编号
  • {SECTIONPAGES}:当前节总页数

五、页眉页脚中的图片与样式

1. 添加图片

在页眉页脚插入 Logo 或装饰图片:

from docx.shared import Inches

# 页眉左侧添加 Logo
header = section.header
para = header.add_paragraph()
para.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT  # 左对齐
run = para.add_run()
run.add_picture("logo.png", width=Inches(1.5))  # 控制图片宽度

2. 设置文本样式

通过段落和 Run 对象定制页眉页脚文本格式:

from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH

para = footer.add_paragraph()
para.alignment = WD_ALIGN_PARAGRAPH.CENTER  # 居中

run = para.add_run("机密文档 | 2023年10月")
run.font.size = Pt(10)  # 小字号
run.font.color.rgb = RGBColor(100, 100, 100)  # 灰色

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值