开发者

python-docx 页面设置详解

开发者 https://www.devze.com 2022-12-02 12:08 出处:网络 作者: 站着活
目录初识word文档-节-的概念设置页边距设置纸张方向和大小设置分栏总结初识word文档-节-的概念
目录
  • 初识word文档-节-的概念
    • 设置页边距
    • 设置纸张方向和大小
    • 设置分栏
  • 总结

    初识word文档-节-的概念

    编辑一篇word文档,往往首先从页面设置开始,从下图可以看出,页面设置常操作的有页边距、纸张方向、纸张大小4个,而在word中是以节(section)来分大的块,每一节的页面设置可以不同。所以在python-docx中也是一样,当前节的各项属性全部保存在当前的section中,要想设置当前节的页面就从了解section的各个属性应用开始吧。

    python-docx 页面设置详解

    如果用python-docx新建一个空白文档,那么默认是只有一个节

    >>> import docx
    >>> doc = docx.Document()
    >>> leMSjkyShsLvn(doc.sections)
    1

    ,如果要增加节可以用doc.add_section()来完成。

    >>> import docx
    >>> doc = docx.Document()
    >>> len(doc.sections)
    1
    >>> doc.add_section()
    <docx.section.Section object at 0x000001F27F85E370>
    >>> len(doc.sections)
    2  

    了解了节之后我们开始来对节的页面进行设置。

    设置页边距

    在python-docx包中常用页边距属性存在section的以下4个属性中:

    section.top_margin:上页边距

    section.bottom_margin:下页边距

    section.left_margin:左页边距

    section.right_margin:右页边距

    页边距的值以厘米(cm)为单位,让我们来看看刚才第二节的默认的页边距是多少

    >>> print('上',doc.sections[1].top_margin.cm,'下',doc.sections[1].bottom_margin.cm,'左',doc.sections[1].left_margin.cm,'右',doc.sections[1].right_margin.cm)
    上 2.54 下 2.54 左 3.175 右 3.175

    注,这里的sections[1]是第二节。

    下面把页边距设置成我们公文常用的5678页面距

    >>> from docx.shared import Cm
    >>> doc.sections[1].top_margin = Cm(3.7)
    >>> doc.sections[1].bottom_margin = Cm(3.5)
    >>> doc.sections[1].left_margin = Cm(2.8)
    >>> doc.sections[1].right_margin = Cm(2.6)

    这里要先导入docx中定义单位的Cm,后面常用的单位还有PMSjkyShsLvt 也是这个块导入。

    另外 页边距属性还有3个不常用的就是装订线,页眉、页脚边距分别为:section.gutter,section.header_distance, section.footerwww.cppcns.com_distance ,设置方法同上,不再赘述。需要说明的是装订线还有一个位置属性,暂时未发现如何设置,默认为左,如果需求设置成右,可以建个模板docx文档导入。

    设置纸张方向和大小

    Section中的三个属性描述了页面方向和尺寸。分别为:section.orientation, section.page_width, section.page_height

    纸张大小设置单位我习惯用cm,设置同页边距。

    这里要特别说下orientation,即纸张方向,也是要设置的,不能说你把纸张宽度设置宽了,高度设置低了纸张就变成横向了,会影响打印等。

    纸张方向的值是docx.enum.section.WD_ORIENTATION中枚举类型的2常量来设置的。分别为:

    WD_ORIENTATION.LANDSCAPE:纸张方向为横向。

    WD_ORIENTATION.PORTwww.cppcns.comRAIT:纸张方向为纵向。

    先查看下:

    >>> doc.sections[0].page_height.cm
    27.94
    >>> doc.sections[0].page_width.cm
    21.59
    >>> doc.sect编程客栈ions[0].orientation
    0

    默认的是信纸大小,横向

    设置成我们常用的A4纸大小下:

    from docx.shared import Cm
    from docx.enum.section import WD_ORIENTATION
    doc.sections[0].page_height = Cm(29.7)  # 设置A4纸的高度
    doc.sections[0].page_width = Cm(21)  # 设置A4纸的宽
    doc.sections[0].orientation = WD_ORIENTATION.PORTRAIT # 设置纸张方向为横向,可以不设置 默认为横向
    doc.sections[1].page_height = Cm(21)  # 设置A4纸的高度
    doc.sections[1].page_width = Cm(29.7)  # 设置A4纸的宽
    doc.sections[1].orientation = WD_ORIENTATION.LANDSCAPE # 设置纸张方向为纵向 

    设置分栏

    有些时候我们还要在某些节中分栏,给节设置分栏的语句比较固定,就是更改section的一个私有属性。先导入docx.oxml.ns.qn,然后一句话搞定

    from docx.oxml.ns import qn
    doc.sections[1]._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '2') #把第二节设置为2栏

    想设置成几栏 把‘2'就改成几。  

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号