Python-docx模块,怎么修改标题的前段距和后段距

Python版本3.9、Python-docx版本1.1.0

故事是这样的,今天在用Python-docx生成文章的时候,发现标题的前段距和后段距不一样。强迫症我一下就上来了。

先尝试过和段落一样的方式设置,但是不生效,也不报错。

Head = doc.add_heading('',level=1) #新建标题
Head.space_before = Pt(10) #前段距,10磅
Head.space_after = Pt(10) #段后距,10磅

后来发现必须要通过,xml的方式更改,

一个简单的测试代码,调整后间距一致

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Inches, RGBColor, Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml

doc = Document()

Head = doc.add_heading('',level=1)
Head.alignment = WD_ALIGN_PARAGRAPH.CENTER #居中
#创建一个 XML 元素来表示段前距
spacing_xml = """ <w:spacing %s w:before="200" w:after="200"/> """ % nsdecls('w')

#解析这个 XML 元素,得到一个真实的、可操作的 XML 对象
spacing_element = parse_xml(spacing_xml)

#获取段落的 pPr 元素
paragraph_properties = Head._p.get_or_add_pPr()

#删除原有的 spacing 元素(如果有的话)
for existing_spacing in paragraph_properties.getchildren():
    if existing_spacing.tag.endswith('spacing'):
        paragraph_properties.remove(existing_spacing)

#添加新的 spacing 元素
paragraph_properties.append(spacing_element)

run  = Head.add_run('测试')
run.font.name = u'微软雅黑'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
run.font.size = Pt(19) #字体大小
run.font.color.rgb = RGBColor(0, 0, 0) #颜色
run.bold = True #加粗

doc.save(r'测试.docx')

这下舒服了

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值