Сообщить об ошибке.

Форматирование абзацев документа MS Word при помощи python-docx

Пример и синтаксис объекта ParagraphFormat:

Пример использования объекта форматирования абзаца ParagraphFormat документа MS Word.

import docx
from docx.shared import Mm
from docx.enum.text import WD_ALIGN_PARAGRAPH

# создание документа
doc = docx.Document()
# Добавляем абзац
p = doc.add_paragraph('Новый абзац.')
# выравниваем абзац по центру
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
# получаем объект форматирования
fmt = p.paragraph_format
# Форматируем:
# отступ слева в мм
fmt.first_line_indent = Mm(15)
# отступ сверху в мм 
fmt.space_before = Mm(20)
# отступ снизу в мм
fmt.space_after = Mm(10)
doc.add_paragraph('Еще новый абзац.')

# а вот так можно получить значения 
# в нужных единицах измерения
print('Интервал перед абзацем в сантиметрах:')
print('    - в сантиметрах:', fmt.space_before.cm)
space_before_mm = fmt.space_before.mm
print('    - в миллиметрах:', fmt.space_before.mm)
doc.save('test.docx')

Описание объекта ParagraphFormat.

Объект ParagraphFormat модуля python-docx предоставляет доступ к форматированию абзацев документа MS Word, например выравниванию, отступу, межстрочному интервалу, пробелам до и после, отступу первого предложения абзаца ("Красная строка") и т.д.

Объект ParagraphFormat НЕ создается вручную, а возвращается свойством абзаца/параграфа Paragraph.paragraph_format.

Свойства объекта ParagraphFormat.

Эти свойства доступны как для чтения, так и для установки/присваивания им значений, если не указано иное.


ParagraphFormat.alignment:

Свойство ParagraphFormat.alignment представляет собой член перечисления WD_PARAGRAPH_ALIGNMENT, определяющий настройку выравнивания для этого абзаца. Значение None указывает, что выравнивание абзаца унаследовано от иерархии стилей.

ParagraphFormat.first_line_indent:

Свойство ParagraphFormat.first_line_indent возвращает/принимает значение Length, которое определяет относительную разницу в отступах для первой строки абзаца.

  • Положительное значение приводит к отступу первой строки абзаца.
  • Отрицательное значение создает выступ.
  • Значение None означает, что отступ первой строки унаследован от иерархии стилей.

ParagraphFormat.keep_together:

Свойство ParagraphFormat.keep_together возвращает (или присвоить) True, если абзац необходимо сохранить "цельным", а не разрывать его на границе страницы при визуализации документа. Значение None означает, что его действующее значение унаследовано от иерархии стилей.

ParagraphFormat.keep_with_next:

Свойство ParagraphFormat.keep_with_next возвращает (или присвоить) True, если абзац должен быть сохранен на той же странице, что и следующий абзац при отображении документа.

Например, это свойство можно использовать для сохранения заголовка раздела на той же странице, что и его первый абзац. Ни один из них не указывает на то, что его эффективное значение унаследовано от иерархии стилей.

ParagraphFormat.left_indent:

Свойство ParagraphFormat.left_indent возвращает/принимает значение Length, которое определяет расстояние между левым полем и левой стороной абзаца. Значение None означает, что отступа слева унаследован от иерархии стилей.

Используйте объект значения Mm() как удобный способ установить отступ в миллиметрах.

ParagraphFormat.line_spacing:

Свойство ParagraphFormat.line_spacing значение float или Length, определяющее расстояние между базовыми линиями в последовательных строках абзаца. Другими словами, межстрочный интервал.

Значение None указывает, что межстрочный интервал унаследован от иерархии стилей.Значение с плавающей запятой, например 2.0 или 1.75, указывает, что интервал применяется кратно высоте строки.Значение длины Length, такое как Pt(12), указывает, что интервал является фиксированной высотой в пунктах.

Класс значений Pt() - это удобный способ применения межстрочного интервала в пунктах.

ParagraphFormat.line_spacing_rule:

Свойство ParagraphFormat.line_spacing_rule представляет собой член перечисления WD_LINE_SPACING, указывающий, как следует интерпретировать значение межстрочного интервала. Назначение любого из членов SINGLE, DOUBLE или ONE_POINT_FIVE приведет к обновлению наследуемого значения межстрочного интервала.

ParagraphFormat.page_break_before:

Свойство ParagraphFormat.page_break_before возвращает (или присвоить) True, если абзац должен появиться вверху страницы после предыдущего абзаца. Значение None означает, что его действующее значение унаследовано от иерархии стилей.

ParagraphFormat.right_indent:

Свойство ParagraphFormat.right_indent возвращает/принимает значение Length, которое определяет расстояние между правым полем и правой стороной абзаца. Значение None означает, что значение отступа справа унаследовано от иерархии стилей.

Используйте объект значения Cm, как удобный способ установить отступ в сантиметрах.

ParagraphFormat.space_after:

Свойство ParagraphFormat.space_after возвращает/принимает значение Length, которое определяет интервал между этим и последующим абзацами. Значение None означает, что это значение унаследовано от иерархии стилей.

Объект Length предоставляет удобные свойства, такие как .mm и .cm, которые позволяют легко читать значения в различных единицах длины.

ParagraphFormat.space_before:

Свойство ParagraphFormat.space_before возвращает/принимает значение Length, которое определяет интервал между этим и предыдущим абзацами.

Значение None означает, что это значение унаследовано от иерархии стилей.

ParagraphFormat.tab_stops:

Свойство ParagraphFormat.tab_stops представляет собой объект TabStops, обеспечивающий доступ к позициям табуляции, определенным для этого формата абзаца.

ParagraphFormat.widow_control:

Свойство ParagraphFormat.widow_control возвращает (или присвоить) True, если первая и последняя строки в абзаце остаются на той же странице, что и остальная часть абзаца, когда Word повторно создает документ.

Значение None означает, что его действующее значение унаследовано от иерархии стилей.