代码和实现效果
python">word">from docx word">import Document
word">from docx.oxml word">import OxmlElement
word">from docx.oxml.ns word">import qn
word">from docx.shared word">import Pt
# 调整pt设置字间距
word">def SetParagraphCharSpaceByPt(run, pt=1):
'''
通过修改word源码方式, 添加w:spacing标签
直接通过调整pt来设置字符间距
'''
# 获取或创建<w:rPr>元素
rPr = run._element.find(qn('w:rPr'))
word">if rPr word">is None:
rPr = OxmlElement('w:rPr')
run._element.insert(0, rPr)
# 创建<w:spacing>元素
spaceChar = OxmlElement('w:spacing')
spaceChar.set(qn('w:val'), str(pt * 20))
# 添加<w:spacing>到<w:rPr>
rPr.append(spaceChar)
word">def AddParagraph(doc, text):
p = doc.add_paragraph()
run = p.add_run(text)
word">return p, run
doc = Document()
p, run = AddParagraph(doc, text='这是一个段落')
SetParagraphCharSpaceByPt(run=run, pt=3)
doc.save('test.docx')
原理和代码思路
通过解压
的方式打开一个已经提前设置好字符间距的word文档,在word/document.xml
可以看到具体关于字符间距设置的XML
标签代码
<w:p>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体"/>
<w:b w:val="0"/>
<w:i w:val="0"/>
<w:sz w:val="32"/>
<w:spacing w:val="150.0"/>
</w:rPr>
<w:t>这是一个段落</w:t>
</w:r>
</w:p>