使用页眉和页脚

Word 支持页眉和页脚。页眉是出现在每页顶部区域的文本,与正文分开,通常传达上下文信息,例如文档标题,作者,创建日期或页码。文档中的页眉在页面之间是相同的,只是内容上的差别很小,例如节标题或页码的变化。页眉也称为 运行头
页脚在所有方面都类似于页眉,只不过它出现在页面底部。不应将其与脚注混淆,脚注在页面之间并不统一。为简便起见,此处经常使用页眉一词来指代页眉或页脚对象,以使读者能够理解其对两种对象类型的适用性。

访问 节(section)的页眉

页眉和页脚链接到一个节;这允许每个节具有不同的页眉和/或页脚。例如,横向节的页眉可能比纵向节的页眉宽。
每个节对象都有一个 .header 属性,可用于访问该节的 _Header 对象:

document = Document()
section = document.sections[0]
header = section.header
header
# <docx.section._Header object at 0x...>

_Header 对象始终存在于 Section.header 上,即使没有为该节定义页眉也是如此。 _Header.is_linked_to_previous 表示是否存在实际的页眉定义:

header.is_linked_to_previous
# True

值为 True 表示 _Header 对象不包含页眉定义,并且该节将显示与上一节相同的页眉。这种 “继承” 行为是递归的,因此 “链接的” 页眉实际上是从具有页眉定义的第一个先前节中获得其定义的。在 Word UI 中,此 “链接” 状态指示为 “与先前相同”。
新文档没有页眉(在包含的单个节上),因此在这种情况下 .is_linked_to_previous 为 True。请注意,这种情况可能有点违反直觉,因为没有先前的页眉可链接。在这种“没有上一个页眉”的情况下,不显示任何页眉。

添加页眉(简单情况)

只需编辑 _Header 对象的内容,即可将页眉添加到新文档中。_Header 对象是“情节”容器,其内容就像 Document 对象一样被编辑。请注意,像新文档一样,新页眉已经包含一个(空)段落:

paragraph = header.paragraphs[0]
paragraph.text = "文档标题"


还要注意,添加内容(甚至只是访问 header.paragraphs )的行为添加了页眉定义并更改了 .is_linked_to_previous 的状态:

header.is_linked_to_previous
# False

添加“分区”页眉内容

具有多个“区域”的页眉通常是使用精心放置的制表位来完成的。
居中和右对齐“区域”所需的制表位是Word中页眉和页脚样式的一部分。如果您使用的是自定义模板而不是 python-docx 的默认模板,则在模板中定义该样式可能很有意义。
插入的制表符(“ \ t”)用于分隔左,中和右对齐的页眉内容:

paragraph = header.paragraphs[0]
paragraph.text = "左对齐文本\t居中文本\t右对齐文本"
paragraph.style = document.styles["Header"]


Header 样式会自动应用到新的页眉,因此在这种情况下,不需要上面的第三行(应用 Header 样式),但在此处包含了此行以说明一般情况。

移除页眉

可以通过将 True 分配给它的 .is_linked_to_previous 属性来删除不需要的页眉:

header.is_linked_to_previous = True
header.is_linked_to_previous
# True

当将 True 分配给 .is_linked_to_previous 时,标题的内容将不可撤消地删除。

了解多节(section)文档中的页眉

“刚开始编辑”方法在简单情况下效果很好,但是要弄清多节文档中的页眉行为,一些简单的概念会有所帮助。

  1. 每个节都可以有自己的页眉定义(但不必如此)。
  2. 缺少页眉定义的节将继承前节的页眉。 _Header.is_linked_to_previous 属性仅反映页眉定义的存在;存在定义时为 False,否则显示为 True。
  3. 缺少页眉定义是默认状态。新文档没有定义的页眉,新插入的节也没有。 .is_linked_to_previous 属性在这两种情况下均为True。
  4. 如果 _Header 对象具有页眉定义,则其内容为其自身的内容。否则,其内容为第一先前节定义的页眉内容。如果没有节具有页眉定义,则在第一个节上添加一个新的页眉定义,其他所有节都继承该页眉定义。页眉定义的这种添加发生在第一次访问页眉内容时,可能是通过引用 header.paragraphs 来实现的。

添加页眉定义(一般情况)

通过将 False 分配给 .is_linked_to_previous 属性,可以为缺少页眉的节提供显式的页眉定义:

header.is_linked_to_previous
# True
header.is_linked_to_previous = False
header.is_linked_to_previous
# False

新添加的页眉定义包含一个空的段落。请注意,以这种方式离开页眉有时会很有用,因为它可以有效地“关闭”该节以及随后的节的页眉,直到下一个具有已定义页眉的节。
为已经具有页眉定义的页眉上的 .is_linked_to_previous 分配 False 不会执行任何操作。

自动定位继承内容

如果存在任何“继承”关系,则编辑页眉的内容会编辑源页眉的内容。因此,例如,如果第2节页眉从第1节继承而编辑第2节页眉,则实际上是在更改第1节页眉的内容。除非首先为它的 .is_linked_to_previous 属性显式分配 False,否则不会为第2节添加新的页眉定义。

python-docx官方文档翻译--用户指南06--使用页眉和页脚相关推荐

  1. python-docx官方文档翻译--用户指南09--使用样式

    使用样式 本页面使用上一页中开发的概念,无需介绍.如果不熟悉该术语,请查阅上一页 了解样式 中的定义. 访问样式 使用 Document.styles 属性访问样式: document = Docum ...

  2. python-docx官方文档翻译--用户指南04--使用文本

    使用文本 为了有效地处理文本,了解段落等块级内容元素和 run 等运行级内容(内联文字)对象是有必要的. 块级与内联文本对象 段落是Word中的主要块级对象. 块级项的文本内容在其左右边界之间,每当文 ...

  3. python (win32com) 批量删除 word (docx, doc) 中所有页眉、页脚 (Word.Application, Word.Basic)

    之前看网上的资料,大部分都是用 python-docx 库来删除 word 文档的页眉.页脚: header.is_linked_to_previous = True 但是实际使用下来,问题不少,也不 ...

  4. python使用fpdf创建页眉、页脚并嵌入图片

    python使用fpdf创建页眉.页脚并嵌入图片 pip install fpdf FPDF类附带了页眉和页脚函数,但是接口本身不做任何事情. 用户必须扩展这些类并为它们实现自己的函数. from f ...

  5. python使用fpdf创建pdf文件包含:页眉、页脚并嵌入logo图片、设置使用中文字体

    python使用fpdf创建pdf文件包含:页眉.页脚并嵌入logo图片.设置使用中文字体 #python使用fpdf创建页眉.页脚并嵌入logo图片.设置使用中文字体 from fpdf impor ...

  6. python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;

    python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...

  7. python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;

    python使用fpdf生成pdf章节(chapter)文件包含:页眉.页脚.章节主体.章节内容等: 目录

  8. python 操作word 修改页眉与页脚

    # -*- coding: utf-8 -*- # @Time : 2022年05月01日 19时59分 # @File : doctemp.py # @notice :from docxtpl im ...

  9. python使用fpdf生成pdf文件并添加页眉和页脚

    python使用fpdf生成pdf文件并添加页眉和页脚 目录 python使用fpdf生成pdf文件并添加页眉和页脚 #加入页眉header示例

最新文章

  1. 用过美德乐吸奶器的宝妈们感觉比国产吸奶器怎么样啊?
  2. underscore
  3. KotlinPoet
  4. 【BZOJ 2809】 [Apio2012]dispatching
  5. Objective-c 字符串的拼接
  6. 容器内存释放问题(STL新手笔记)
  7. leetcode 375. Guess Number Higher or Lower II | 375. 猜数字大小 II(动态规划思路总结)
  8. 普中科技开发板使用说明书_百度大脑加持,米尔科技FZ3深度学习计算卡评测
  9. AUTOSAR从入门到精通100讲(六)-Multicore-多核存储优化
  10. java double add,Java中的DoubleStream.Builder add()方法
  11. 20个短视频素材网站
  12. VS 2013安装教程
  13. python爬虫 导出/乱码/中英文夹杂问题解决
  14. 操作系统概念之OSAL
  15. 三国志战略版:【满红杀手】名将卡包新武将_许攸分析
  16. 树莓派(Raspberry )开机自动启动Python程序
  17. 23种设计模式之代理模式(动态代理)
  18. Ubuntu 16.04 LTS 初体验 (转载)
  19. 计算机键盘能直接接手机吗,手机变成电脑!将键盘和鼠标连接到智能手机的3种方式...
  20. 移动支付之支付宝支付

热门文章

  1. 概率抽奖常用两种方式
  2. 计算机图形学直线裁剪原理,计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪...
  3. 困惑很久的解微分方程时绝对值取舍问题(必看)
  4. Web实现:网易云音乐个人推荐页
  5. Windows 消息大全
  6. iOS-获取当前设备的局域网以及链接的WiFi分配的IP地址
  7. 【面试必备】编程学java还是c
  8. Node.js 网站内容抓取及Mysql存取Demo
  9. 年度十佳电商网站设计赏析
  10. Qt编写安防视频监控系统13-视频存储