Я создаю документ MS Word из шаблона, используя python -docx, и мне нужна функция, которая позволяет мне форматировать текст в том же абзаце.
Я нашел этот фрагмент в другом топи c, который работал у меня:
class Text:
def __init__(self, text, bold=False, italic=False, color=None):
self.text = text
self.bold = bold
self.italic = italic
self.color = color
def add_text(textitems):
p = doc.add_paragraph('')
for t in textitems:
r = p.add_run(t.text)
if t.bold:
r.bold = True
if t.italic:
r.italic = True
if isinstance(t.color, RGBColor):
r.font.color.rgb = t.color
Это вызывается из другой функции следующим образом:
add_text([Text('This is an ', bold=False, italic=False, color=None),
Text('example', bold=True, italic=False, color=RGBColor(0xFF, 0x00, 0x00))])
Теперь я хотите реализовать тип и размер шрифта. Как лучше всего это сделать?
Решено так:
class Text:
def __init__(self, text, bold=False, italic=False, color=None, name=None, size=None):
self.text = text
self.bold = bold
self.italic = italic
self.color = color
self.name = name
self.size = size
def add_text(textitems):
p = doc.add_paragraph('')
for t in textitems:
r = p.add_run(t.text)
if t.bold:
r.bold = True
if t.italic:
r.italic = True
if isinstance(t.color, RGBColor):
r.font.color.rgb = t.color
if t.name:
r.font.name = t.name
if t.size:
r.font.size = t.size
И назвав его:
add_text([Text('This is an ', bold=False, italic=False, color=None, name='Calibri', size=Pt(12)), Text('example', bold=True, italic=False, color=RGBColor(0xFF, 0x00, 0x00), name='Calibri', size=Pt(12))])