Установить шрифт абзаца в 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.

Другие вопросы по тегам