使用docx,我试图为运行定义多个属性。 当我设置颜色rtl时,效果很好。 但是当我还添加字体大小时,它将被忽略。 如果仅设置字体大小,则效果很好。
这很好(字体颜色更改并且从右到左运行):
run = p.add_run(line)
font = run.font
font.rtl = True
font.color.rgb = RGBColor(0x42, 0x24, 0xE9)
这也很好用(修改了字体大小):
run = p.add_run(line)
font = run.font
font.size = Pt(8)
#font.rtl = True # commented out
但这不会改变字体的大小:
run = p.add_run(line)
font = run.font
font.size = Pt(8)
font.rtl = True
我尝试了命令的不同顺序,但没有任何效果。
答案 0 :(得分:3)
好,找到了! 事实证明,在这种情况下,这种情况下的字体大小必须包含复杂的脚本指令。这意味着您必须添加
<w:szCs w:val="???"/>
代替(或补充)正常
<w:sz w:val="??"/>
我必须在docx库中为字体添加一个新属性,现在它可以正常工作。更改在3个docs文件中:
text/font.py
oxml/__init.py__
oxml/text/font.py
以及我认为的用法:
run = p.add_run(line)
font = run.font
#font.size = Pt(8) This line is redundant - but you can leave it
font.cs_size = Pt(8)
font.rtl = True
向docx库添加了一个fork。在https://github.com/Oritk/python-docx
答案 1 :(得分:0)
接受 我还没有开始使用docx(我主要使用Excel python模块),但是根据此处的文档,您好像在修改错误的style属性。根据rtl属性的定义,Font属性只会修改添加的运行(通过myparagraph.add_run(“ Hello World”,style =“ rtl”))。据我所知,您正在查找的代码为:
missingwords = Document()
style = missingwords.styles.add_style('rtl', WD_STYLE_TYPE.PARAGRAPH)
style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
然后您可以像以前一样添加段落
paragraph = missingwords.add_paragraph("Hello world",style='rtl')
同样,只是关闭文档,所以让我知道是否可行