pythondocx_python-docx页面设置

在WORD软件中对页面设置一般要先让光标移动到页面上,然后点击“页面布局”菜单的“页面设置”功能区进行设置,或者在“页面设置”属性框中设置,见下图。而在Python-docx包中要使用section对象中page_height、page_width、orientation、top_margin等属性来实现对页面大小,纸张,方向,页边距和装订线的设置。笔者将详细叙述使用python-docx包中对docx文档页面设置功能的实现,最后制作了思维导图。

30adcbef76094b360460a42a1067ecdf8f109dbd.jpeg?token=164865af2100b2de3f97a7e32f3fd798WORD软件中页面设置

01页面大小

在python-docx包中要使用section.page_width和section.page_height属性来实现页面大小的读取和设置。在本文中由于要设置长度,所以要导入docx.shared. Cm等单位换算函数。例如:

from docx import Document # 导入docx包from docx.shared import Cm, Inches, Pt # 导入单位换算函数document = Document() # 新建word文档section = document.sections[0] # 获取section对象print('默认页面的宽度和高度:', section.page_width.cm,section.page_height.cm) # 打印默认页面宽度和高度section.page_width = Cm(40)section.page_height = Cm(40)print('修改后页面的宽度和高度:', section.page_width.cm,section.page_height.cm) # 打印修改后的页面宽度和高度document.save('test.docx') # 保存word文档打印默认页面大小结果如下图

b90e7bec54e736d18f2819c82afbdfc4d462696d.jpeg?token=c1f3c05046ebc6afe91999d5a1f7a1d8页面大小修改前后结果图

修改后的效果见下图

7c1ed21b0ef41bd5bddf5cbbe57111cd38db3d26.jpeg?token=83d6a9a1a392020abed860eb0b7b1f17页面大小修改后效果图

纸张默认大小同WORD软件中内置的信纸纸张大小相同。通过修改section.page_width和section.page_height属性的值将页面大小调整为高度40cm,宽度40cm。此时页面纸张大小类型为“自定义大小”。

02设置纸张

在Word软件中内置了很多纸张参数。那么笔者将以设置A4纸的形式演示使用python-docx设置纸张,见如下代码:

section.page_width = Cm(21) # 设置A4纸的宽度section.page_height = Cm(29.7) # 设置A4纸的高度运行后文档的效果见下图:

4ec2d5628535e5dd106ddd5ac26d37e9cf1b6220.jpeg?token=b795418f6d8443bffb8b83792c4b67bb设置A4纸张效果图

只要将section.page_width和section.page_height属性按照A4纸的宽度和高度进行设置,WORD软件就会自动识别成A4纸。在WROD软件中内置很多中纸张的参数,可以通过“页面布局”菜单中“页面设置”功能区的“纸张大小”中进行查询,见下图:

21a4462309f7905236413993b85847cc7acbd577.jpeg?token=fbd0559d8507416680fb833467fe4a23WORD软件中内置纸张参数

03设置纸张方向

在Python-docx包中section.orientation属性可以设置纸张方向,这要使用docx.enum.section.WD_ORIENTATION中枚举类型的常量。WD_ORIENTATION共有2个常量,含义如下:

WD_ORIENTATION.LANDSCAPE:纸张方向为横向。WD_ORIENTATION.PORTRAIT:纸张方向为纵向。在Word文档中默认设置为纵向(PORTRAIT)。在python-docx包中如果只设置orientation属性,页面并不会改变方向。因为设置orientation属性并不会改变section.page_width和section.page_height属性值,页面也就不会发生变化。如下代码演示了将纸张从纵向设置为横向:

from docx.enum.section import WD_ORIENTATIONsection.orientation = WD_ORIENTATION.LANDSCAPE # 不会出现A4 旋转page_h, page_w = section.page_width, section.page_heightsection.page_width = page_w # 设置横向A4纸的宽度section.page_height = page_h # 设置横向A4纸的高度改变页面方向后的效果如下图:

a8773912b31bb051920fd8fb84d14ab24bede068.jpeg?token=79f5736c19321d45372cb4cdc91881d9更纸张访问为横向效果图

d439b6003af33a8761dea7cb75f7803e5143b5e6.jpeg?token=2a3ef07c8a421a0be3755298d56b51be更改成横向纸张大小图

文档的纸张方向成功更改成了横向,纸张仍然是A4。既然只有将纸张的section.page_width和section.page_height属性进行修改才能显示更改的纸张方向,那么不设置orientation属性,只设置section.page_width和section.page_height属性会不会也能起到改变纸张方向的效果那?代码修改如下:

page_h, page_w = section.page_width, section.page_height # 提取页面的高度和宽度section.page_width = page_w # 设置A4纸的宽度,section.page_height = page_h # 设置A4纸的高度只改变纸张的宽度和高度,效果图如下

9213b07eca806538f44dbe8026763142ac348234.jpeg?token=cc51bca892248389345725d47a078c2c只改变页面的大小

此时文档从效果上看确实是改成了横向。此时查看纸张的方向,仍然是纵向,纸张大小却是“A4 旋转”。从效果上看只设置section.page_width和section.page_height属性也能起到改变纸张方向的效果。

04设置页面边距

在python-docx包中设置页边距要用到section.top_margin、section.bottom_margin、section.left_margin和section.right_margin四个属性。含义如下:

section.top_margin:上页边距section.bottom_margin:下页边距section.left_margin:左页边距section.right_margin:右页边距只需读取或者改变这四个属性的值就可以实现对页边距读取和设置,代码如下:

print("页面上边距:", section.top_margin.cm)print("页面下边距:", section.bottom_margin.cm)print("页面左边距:", section.left_margin.cm)print("页面右边距:", section.right_margin.cm)# 修改后section.top_margin = Cm(5)section.bottom_margin = Cm(5)section.left_margin = Cm(4)section.right_margin = Cm(4)页面边距测试结果图下图

6a600c338744ebf893aa2e846a52472c6259a7e0.jpeg?token=4cd694e4c991d107d7eb45864c6ae0fe页边距设置结果图

页边距更改效果如下图

42a98226cffc1e179ede101bfe3b6605728de9ed.jpeg?token=0a548b5b4652fb1e74fa3254dce978ae页边距更改后的效果图

docx文档中默认页边距是上、下边距为2.54cm,左、右边距为3.175cm,更改后上下、页边距变成了5cm,左、右页边距变成了4cm。

05设置装订线

使用section.gutter属性可以设置装订线的位置,将装订线的位置设置为1cm代码如下:

print('设置装订前', section.gutter.cm)section.gutter = Cm(1)print('设置装订线后:', section.gutter.cm)运行结果如下图

d439b6003af33a87f8f03c4d75f7803e5243b57d.jpeg?token=ed5fb35760a6dda3e21ca7cca77e13f8装订线设置后的结果图

设置1cm装订线的文档效果如下图

8ad4b31c8701a18b036469022c84970e2938fe26.jpeg?token=5fee8495a3215d3af73053e7adea2c7f设置1cm装订线的文档效果图

页面中默认装订线是0cm,经过设置后文档的装订线位置更改为了1cm。

笔记先后总结了页面大小、纸张设置、页边距和装订线4个部分部分,制作了思维导图,见下图。希望为使用python-docx包进行页面设置的同行提供参考。

u=2871237859,1339018048&fm=173&app=25&f=JPEG?w=640&h=1222&s=D8001A745BABC16C4A9EB243020060FBpython-docx页面设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值