python-docx-template包之----为文字自定义样式(一)

官方文档:

https://docxtpl.readthedocs.io/en/latest/

安装

pip install docxtpl

概述

docxtpl会使用2个包

  • python-docx用于读取,编写和创建子文档
  • jinja2用于管理插入到模板docx中的标签

可以利用jinja2制作Word模板,并动态向模板中插入文字、图片、表格等内容。具体用法可查阅官方文档,这里详细介绍下如何为文字自定义样式。

{{ <var> }} 这种标签会使var代表的文字格式为当前字符样式

{{r <var> }} 如果使用richtext样式,则会在当前docx模板中删掉当前字符样式,此时如果没有指定richtext样式,则会使用Word默认样式,以下方法可以指定richtext样式。方法二可以设置文字大小、颜色、粗体、斜体。但最好使用方法一新建样式。

方法一:新建样式

1. word模板中新建样式

2. 为自定义样式命名为: myrichtextstyle,需要注意的是样式基准必须为:a默认段落字体(即Character style), 可以为样式设置其他格式,比如字体大小、颜色行间距等

3. 在模板中将需要自定义格式的文字设置为richtext, 例如:

扫描二维码关注公众号,回复: 2642842 查看本文章

   {{r example}}

4. 在程序中,(以下为官方示例的richtext.py)

from docxtpl import DocxTemplate, RichText

tpl=DocxTemplate('test_files/richtext_tpl.docx')

rt = RichText('an exemple of ')
rt.add('a rich text', style='myrichtextstyle')
rt.add('some violet', color='#ff00ff')

context = {
    'example' : rt,
}

tpl.render(context)
tpl.save('test_files/richtext.docx')

方法二:程序指定

方法:

from docxtpl import DocxTemplate, RichText

tpl=DocxTemplate('test_files/richtext_tpl.docx')

rt = RichText('an exemple of ')
rt.add(' with ')
rt.add('some italic', italic=True)  #斜体
rt.add(' and ')
rt.add('some violet', color='#ff00ff') #颜色
rt.add(' and ')
rt.add('some striked', strike=True) #删除线
rt.add(' and ')
rt.add('some small', size=14) #字体大小
rt.add(' or ')
rt.add('big', size=60)
rt.add(' text.')
rt.add(' Et voilà ! ')
rt.add('\n1st line')
rt.add('\n2nd line')    #换行
rt.add('\n3rd line')
rt.add('\n\n<cool>')

context = {
    'example' : rt,
}

tpl.render(context)
tpl.save('test_files/richtext.docx')

结果:

注意事项:

1. 在设置文字颜色时,rt.add("some violet",color='#ff00ff')这种设置方法,WPS不兼容,因此按照上述自定义类型的方法来设置文字颜色比较好

猜你喜欢

转载自blog.csdn.net/weixin_42670653/article/details/81503294
今日推荐