如何在python中设置字体间距,或者如何将元素添加到w:rPr? //
发布于 2021-12-22 21:22:35
在python-docx中不支持此设置。
添加一个<w:spacing>元素是可行的,但是在WordprocessingML ( XML .docx文件所遵循的)中,子元素出现的顺序通常是非常重要的。如果您没有按照正确的顺序在w:spacing子元素中获得w:rPr元素,或者在其中一个元素已经存在时添加一个元素,那么您将触发一个修复错误。
所以你需要这样的东西:
def run_set_spacing(run, value: int):
"""Set the font spacing for `run` to `value` in twips.
A twip is a "twentieth of an imperial point", so 1/1440 in.
"""
def get_or_add_spacing(rPr):
# --- check if `w:spacing` child already exists ---
spacings = rPr.xpath("./w:spacing")
# --- return that if so ---
if spacings:
return spacings[0]
# --- otherwise create one ---
spacing = OxmlElement("w:spacing")
rPr.insert_element_before(
spacing,
*(
"w:w",
"w:kern",
"w:position",
"w:sz",
"w:szCs",
"w:highlight",
"w:u",
"w:effect",
"w:bdr",
"w:shd",
"w:fitText",
"w:vertAlign",
"w:rtl",
"w:cs",
"w:em",
"w:lang",
"w:eastAsianLayout",
"w:specVanish",
"w:oMath",
),
)
return spacing
rPr = run._r.get_or_add_rPr()
spacing = get_or_add_spacing(rPr)
spacing.set("val", str(value))然后,您将对需要该设置的每一次运行调用如下所示:
run_set_spacing(run, 200)发布于 2022-08-24 02:45:29
我用狡诈的方法来回答,但没有用。但是输出文档XML 接近正确的格式。正确的格式是
尝尝这个
from docx.oxml.ns import qn
spacing.set(qn('w:val'), str(value))https://stackoverflow.com/questions/70453019
复制相似问题