python-docx 中的字体类型和字体大小
font type and font size in python-docx
我正在使用 python-docx 从模板生成 MS Word 文档,我需要一个允许我在同一段落中设置文本格式的功能。
我在另一个对我有用的主题中找到了这个片段:
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))])
像这样的东西应该工作得很好。请注意,省略不更改默认值的关键字参数可能更清晰,例如:
add_text(
[
Text('This is an '),
Text('example', bold=True, color=RGBColor(0xFF, 0x00, 0x00))
]
)
此外,在 RGBColor
上有一个 .from_string()
方法,允许更紧凑的表达式,例如:
Text('example', color="FF0000")
和 RGBColor.from_string(color)
在你的 add_text()
函数中。
我正在使用 python-docx 从模板生成 MS Word 文档,我需要一个允许我在同一段落中设置文本格式的功能。
我在另一个对我有用的主题中找到了这个片段:
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))])
像这样的东西应该工作得很好。请注意,省略不更改默认值的关键字参数可能更清晰,例如:
add_text(
[
Text('This is an '),
Text('example', bold=True, color=RGBColor(0xFF, 0x00, 0x00))
]
)
此外,在 RGBColor
上有一个 .from_string()
方法,允许更紧凑的表达式,例如:
Text('example', color="FF0000")
和 RGBColor.from_string(color)
在你的 add_text()
函数中。