页眉页脚是 Word 文档版式设计的重要组成部分,用于展示页码、文档标题、日期等固定信息。
一、页眉页脚的基本概念
- 页眉(Header):页面顶部的固定区域
- 页脚(Footer):页面底部的固定区域
- 节(Section)关联:页眉页脚默认与所属节绑定,不同节可设置不同的页眉页脚
- 继承关系:新节默认继承前一节的页眉页脚设置,可通过配置解除关联
每个节包含 3 种页眉页脚(对应不同页面):
- 首页页眉页脚(仅第一节首页生效)
- 奇数页页眉页脚
- 偶数页页眉页脚
二、访问与创建页眉页脚
1. 访问页眉页脚对象
通过节对象的 header 和 footer 属性访问:
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) # 灰色
1081

被折叠的 条评论
为什么被折叠?



