Установить шрифт абзаца в python-docx
Я использую python-docx 0.7.6.
Я не могу понять, как установить семейство и размер шрифта для определенного абзаца.
Есть .style
свойство но style="Times New Roman"
не работает
Может кто-нибудь, пожалуйста, укажите мне пример?
Благодарю.
5 ответов
Поддержка стилей запуска была добавлена в последнюю версию python-docx
Это как установить Normal
стиль шрифта Arial
и размер 10pt
,
from docx.shared import Pt
style = document.styles['Normal']
font = style.font
font.name = 'Arial'
font.size = Pt(10)
И это как применить его к paragraph
,
paragraph.style = document.styles['Normal']
Использование текущей версии python-docx (0.8.5).
После прочтения документации по API я смог понять, как создать свой собственный стиль и применить его. Вы можете создать объект стиля абзаца таким же образом, изменив этот код на использование WD_STYLE_TYPE.PARAGRAPH. Что-то, что заняло у меня минуту, чтобы понять, были объекты и на каком уровне они применяются, так что просто убедитесь, что вы понимаете это ясно. Что-то, что я нашел противоречащим интуиции, это то, что вы определяете свойства стилей после его создания.
Вот как я создал объект стиля уровня персонажа.
document = Document(path to word document)
# Создает стиль объекта уровня персонажа ("CommentsStyle"), затем определяет его параметры
obj_styles = document.styles
obj_charstyle = obj_styles.add_style('CommentsStyle', WD_STYLE_TYPE.CHARACTER)
obj_font = obj_charstyle.font
obj_font.size = Pt(10)
obj_font.name = 'Times New Roman'
Вот как я применил стиль к бегу.
paragraph.add_run(any string variable, style = 'CommentsStyle').bold = True
Используйте этот код, он вам очень поможет.
import docx
from docx.shared import Pt
from docx.enum.style import WD_STYLE_TYPE
doc = docx.Document()
parag = doc.add_paragraph("Hello!")
font_styles = doc.styles
font_charstyle = font_styles.add_style('CommentsStyle', WD_STYLE_TYPE.CHARACTER)
font_object = font_charstyle.font
font_object.size = Pt(20)
font_object.name = 'Times New Roman'
parag.add_run("this word document, was created using Times New Roman", style='CommentsStyle').bold = True
parag.add_run("Python", style='CommentsStyle').italic = True
doc.save("test.docx")
Документация по python-docx находится здесь: http://python-docx.readthedocs.org/en/latest/
Стили, доступные в шаблоне по умолчанию, перечислены здесь: http://python-docx.readthedocs.org/en/latest/user/styles.html
В приведенном выше примере вы использовали имя гарнитуры ("Times New Roman") вместо идентификатора стиля. Например, если вы используете "Заголовок1", это изменит внешний вид шрифта, поскольку это стиль абзаца.
В настоящее время не существует API для непосредственного применения имени шрифта или размера шрифта к тексту в python-docx, хотя это и многое другое появится в следующем выпуске, вероятно, в течение месяца. В то же время вы можете определить стили для нужного абзаца и символов и применить эти стили. Использование стилей является рекомендуемым способом применения форматирования в Word, подобно тому, как CSS является рекомендуемым способом применения форматирования к HTML.