编写一个word文档,每个字符都有不同的字体



我有3种字体。我想修改Word文档,让每个字符(字母表(随机或按某种顺序分配三种字体中的一种,我不介意。连续的两个字符不应使用相同的字体。

我试着写了一个python脚本,但我试着理解docx-Python库,我认为只有段落级别的样式是可能的。

这就是我尝试的:

import docx
from docx.shared import Pt
doc = docx.Document("Hey.docx")
mydoc = docx.Document()
style1 = mydoc.styles['Normal']
font1=style1.font
font1.name = 'Times New Roman'
font1.size = Pt(12.5)
style2 = mydoc.styles['Normal']
font2=style2.font
font2.name = 'Arial'
font2.size = Pt(15)
all_paras = doc.paragraphs
for para in all_paras:
mydoc.add_paragraph(para.text,style=style1)
print("-------")
mydoc.save("bye.docx")

如果hey.docx具有";你好"作为文本:Bye.docx应该具有";H(字体A(e(字体B(l(字体C(l(在字体A(o(在字体B(";

将每个字符添加为段落中的单独运行,并为每个运行分配一个字符样式。

from docx import Document
from docx.enum.style import WD_STYLE_TYPE as ST
document = Document()
styles = document.styles
style_A = styles.add_style("A", ST.CHARACTER)
style_A.font.name = "Arial"
style_A.font.size = Pt(15)
style_B = styles.add_style("B", ST.CHARACTER)
style_B.font.name = "Times New Roman"
style_B.font.size = Pt(12.5)
paragraph = document.add_paragraph()
for idx, char in enumerate("abcde"):
paragraph.add_run(char, style_A if idx % 2 else style_B)
document.save("output.docx")

我将让您创建额外的角色样式,并发明一种更复杂的方法来确定分配给每个角色的样式。

最新更新