【python-docx】插入节、自定义纸张大小、纸张方向、页边距、装订线、页眉页脚、首页相同和奇偶页不同

本文介绍如何使用python-docx库操作Word文档布局,包括添加不同类型的节、自定义纸张大小和方向、调整页边距、设置页眉页脚、配置装订线位置,以及首页和奇偶页的不同设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.插入节

Word可以把文档分成不同的部分方便管理,即不同的节,在python-docx把节用Section对象表示,Document对象有add_section()方法添加节,可以通过sections属性获取所以节。值得注意的是,Document对象没有默认的段落,但有一个默认的节

from docx import Document
from docx.enum.section import WD_SECTION_START

doc = Document()
print(len(doc.paragraphs))  # 0,没有默认段落
print(len(doc.sections))  # 1,有默认节
default_section = doc.sections[0]  # 获取默认节
new_section = doc.add_section(start_type=WD_SECTION_START.NEW_PAGE)  # 新增一个节,类型是新页的分隔符
new_section.start_type = WD_SECTION_START.EVEN_PAGE

# WD_SECTION_START.CONTINUOUS  连续分节符,枚举值0
# WD_SECTION_START.NEW_COLUMN  新列分节符,枚举值1
# WD_SECTION_START.NEW_PAGE    新页分节符,枚举值2
# WD_SECTION_START.EVEN_PAGE   偶数页分节符,枚举值3
# WD_SECTION_START.ODD_PAGE    奇数页分节符,枚举值4

for section in doc.sections:
    print(section.start_type)

如果插入节不指定节的类型,默认是WD_SECTION_START.NEW_PAGE,即新页节,另外还有连续分节符、奇数页、偶数页等常用节的类型都有枚举值,传入对应的数字也是可以的,例如WD_SECTION_START.NEW_PAGE可以用2代替

2.自定义纸张大小
from docx import Document
from docx.shared import Cm

doc = Document("./test.docx")
default_section = doc.sections[0]
# 默认宽度和高度
print(default_section.page_width.cm)  # 21.59
print(default_section.page_height.cm)  # 27.94
# 可直接修改宽度和高度,即纸张大小改为自定义
default_section.page_width = Cm(30)
default_section.page_height = Cm(20)

doc.save("./test.docx")
3.纸张方向

Section对象的orientation控制纸张的方向,WD_ORIENTATION枚举类型有PORTRAIT和LANDSCAPE 分别表示纵向和横向,可以用数字0和1代替。默认是纵向(PORTRAIT),值得注意的是,如果要改为横向,除了修改orientation还需要手动调换一下Section的宽度和高度才行

...
print(default_section.orientation)  # 默认是PORTRAIT,即纵向
default_section.orientation = WD_ORIENTATION.LANDSCAPE  # 改为横向
# 需要手动互换高度和宽带
default_section.page_width, default_section.page_height = default_section.page_height, default_section.page_width
4.页边距

Section对象分别用top_margin、right_margin、bottom_margin、left_margin来表示上左下右四个边距

print(default_section.top_margin.cm)  # 2.54
print(default_section.right_margin.cm)  # 3.175
print(default_section.bottom_margin.cm)  # 2.54
print(default_section.left_margin.cm)  # 3.175
# 修改页边距
default_section.top_margin = Cm(2.5)
default_section.right_margin = Cm(3)
default_section.bottom_margin = Cm(2.5)
default_section.left_margin = Cm(3)
5.装订线

Section对象的gutter属性代表装订线的位置,可以直接修改

# 默认装订线是0
print(default_section.gutter)
# 修改装订线为1厘米
default_section.gutter = Cm(1)
6.页眉页脚

Section对象的header属性和footer属性分别获取到页眉和页脚,页眉页脚的使用方式是一样的

doc = Document()
default_section = doc.sections[0]
section2 = doc.add_section()

# 页眉
header = section2.header  # 获取章节的页眉
print(header.is_linked_to_previous)  # 默认是链接到上一节
header.is_linked_to_previous = False  # 取消链接到上一节,即不使用上一章节的样式
header.paragraphs[0].add_run("第二章节的页眉")  # 添加页眉文本
header.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 页眉样式,居中对齐
print(section2.header_distance.cm)  # 页眉到顶端的距离,默认是1.27
section2.header_distance = Cm(1.5)  # 修改页眉到顶端的距离

# 页脚
footer = section2.footer  # 获取章节的页脚
footer.is_linked_to_previous = True  # 使用上一章节的页脚样式
footer.paragraphs[0].add_run("这是页脚文本")  # 添加页脚文本
footer.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT  # 页脚,居左对齐
print(section2.footer_distance.cm)  # 页脚到底端的距离,默认是1.27
section2.footer_distance = Cm(1.5)  # 修改页脚到底端的距离
7.首页相同和奇偶页不同

首页相同和奇偶页不同设置很简单,就修改一下属性的布尔值,但要注意一下优先级,如果在不同情况都对Section设置了样式,优先级是,首页不同>奇偶页>普通页

# 首页不同,默认是False,即默认首页相同
section2.different_first_page_header_footer = True

# 奇偶页不同,默认是False,即默认奇偶页相同
doc.settings.odd_and_even_pages_header_footer = True
在使用python-docx库为不同设置不同页眉页脚时,你需要掌握如何添加、操作段落以及如何控制页眉页脚的链接状态。以下是基本步骤: 1. 首先,你需要导入python-docx库,并打开一个已存在的Word文档或者创建一个新的文档。 2. 然后,你可以在文档中添加新的。每个都可以有自己的页眉页脚设置。 3. 对于每个新添加的,你可以获取它的`_section`对象。 4. 通过`_section`对象,你可以控制新页眉页脚是否链接到前一个页眉页脚。如果不链接,你就可以对新页眉页脚进行自定义设置。 5. 你可以使用`HeaderFooter`类来创建页眉页脚,并向其中添加内容,比如文本或图像。 6. 最后,将设置好的页眉页脚与相应的关联起来。 以下是一个简化的代码示例,演示了如何为一个新设置独立的页眉页脚: ```python from docx import Document from docx.shared import Inches # 创建或打开文档 doc = Document() # 添加一个新,它将不继承前一个页眉页脚 doc.add_section(WD_SECTION_NEW_PAGE) # 获取新页眉页脚对象 footer = doc.sections[-1].footer header = doc.sections[-1].header # 添加页眉页脚的内容 header.text = "这是新页眉" footer.text = "这是新页脚" # 保存文档 doc.save('example.docx') ``` 请注意,上述代码需要你手动管理的添加页眉页脚的设置,因为python-docx库本身并不提供直接的接口来控制页眉页脚的链接状态。你可能需要根据具体需求编写更多的逻辑代码来完成更复杂的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值