В python-docx стиль любого символа в шаблонном документе docx может быть переопределен с помощью стиля Rich Text . Вы должны предоставить переменную контекста для конкретного символа / строки, которая требует стилизации в вашем шаблоне, в позиции символа / строки. Эта переменная отображается на объект RichText
, который имеет определение стиля (которое вы определяете в своем коде), чтобы стилизовать символ / строку. Чтобы прояснить ситуацию, рассмотрим пример шаблона документа "test.docx", который содержит следующий текст:
Здравствуйте, {{r context_var}}!
{{..}}
- это синтаксис тега jinja2, а {{r
- это тег RichText, который переопределяет стили символов. context_var
- это переменная, которая отображает стиль в строку символов.
Мы выполняем стилизацию Rich Text следующим образом:
from docxtpl import DocxTemplate, RichText
doc = DocxTemplate("test.docx")
rt = RichText() #create a RichText object
rt.add('World', bold=True) #pass the text as an argument and the style, bold=True
context = { 'context_var': rt } #add context variable to the context and map it to rt
doc.render(context) #render the context
doc.save("generated_doc.docx") #save as a new document
Давайте посмотрим на содержимое «generate_doc.docx»:
Привет Мир !
Я не уверен, как устроен ваш шаблон, но если вы просто хотите, чтобы book_title
был выделен жирным шрифтом, ваш шаблон "test.docx" должен иметь такой текст:
Название: -
{{r book_title_var}}
Код должен быть изменен на:
book_title = "Lord of the Rings" #or wherever you get the book title from
rt.add(book_title, bold=True)
context = { 'book_title_var': rt }
generated_doc.docx:
Заголовок: -
Властелин колец