【问题标题】:How do I change font size in a docx file python如何更改docx文件python中的字体大小
【发布时间】:2019-01-14 13:58:51
【问题描述】:

我正在尝试创建财务日志,但是我无法将字体大小从一种大小更改为另一种,而不会更改所有文本的整个字体大小。

我希望“财务日志”和“创建时间...”为 48,“日志开始:”为 24。

Tstyle = doc.styles['Normal']
font = Tstyle.font
font.name = "Nunito Sans"
font.size = Pt(48)
Title = doc.add_paragraph()
TRun = Title.add_run("Finance Log")
TRun.bold = True
CurrentDate= datetime.datetime.now()
FormattedDate= CurrentDate.strftime('%d-%m-%Y')
FCreated = Title.add_run("\nFile Created On "+FormattedDate)
Fstyle = doc.styles['Heading 1']
font = Fstyle.font
font.name = "Nunito Sans"
font.size = Pt(24)
FLog = doc.add_paragraph()
FinanceTitle = FLog.add_run("Log Begins:")
doc.save(path_to_docx)

我尝试了多种方法,例如创建新样式、将新样式设置为标题等...

我知道Set paragraph font in python-docx 但是我无法解决这个问题

【问题讨论】:

  • 将字体.size 分配给run 对象。我没有使用样式,但我怀疑它是同一件事,将样式分配给run。这应该和how to apply bold or underlining的思路一样

标签: python python-3.x docx doc


【解决方案1】:

如果不改变所有文本的整个字体大小,我无法将字体大小从一种大小更改为另一种大小。

这是因为您正在更改 style 对象的底层字体大小:

Tstyle = doc.styles['Normal']
font = Tstyle.font  # << this line assigns font = doc.styles['Normal'].font

因此,您不是在使用一些通用的“字体”属性,而是在使用属于命名样式“普通”的字体。所以:

font.name = "Nunito Sans"
font.size = Pt(48)  # << this line changes the font size of doc.styles['Normal']

未经测试,但尝试类似:

TStyle, FStyle = doc.styles['Normal'], doc.styles['Heading 1']
for style in (TStyle, FStyle):
    style.font.name = "Nunito Sans"
TStyle.font.size = Pt(48)
FStyle.font.size = Pt(24)


Title = doc.add_paragraph()
Title.style = TStyle
TRun = Title.add_run("Finance Log")
TRun.bold = True

FCreated = Title.add_run("\nFile Created On {0}".format(datetime.datetime.now().strftime('%d-%m-%y')))

FLog = doc.add_paragraph()
FLog.style = FStyle
FinanceTitle = FLog.add_run("Log Begins:")
doc.save(path_to_docx)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多