В материале дается описание и примеры работы со встроенными константами модуля python-docx
, которые определяют поведение различных элементов документа DOCX.
Приведенные ниже константы имеют аналогичное значение в редакторе MS Word, что обеспечивает полную поддержку форматирования модулем python-docx
.
WD_SECTION_START
тип начала разрыва секции/раздела;WD_ORIENTATION
ориентация листа/страницы документа;WD_ALIGN_PARAGRAPH
выравнивание текста в абзаце;WD_LINE_SPACING
интерпретация межстрочного интервала абзаца.WD_UNDERLINE
задает стиль подчеркивания символа/слова;WD_COLOR_INDEX
задает стандартный цвет выделения шрифтов.WD_TABLE_ALIGNMENT
тип выравнивания таблицы.WD_ROW_HEIGHT_RULE
правило определения высоты строки таблицы.WD_CELL_VERTICAL_ALIGNMENT
вертикальное выравнивание текста в одной или нескольких ячейках таблицы;WD_STYLE_TYPE
типы стиля: абзац, символ, список или таблица.WD_SECTION_START
:Короткая ссылка для импорта WD_SECTION
- это перечисление, которое задает тип начала разрыва секции.
WD_SECTION.CONTINUOUS
: непрерывный разрыв секции.WD_SECTION.NEW_COLUMN
: секция начинается с нового столбца.WD_SECTION.NEW_PAGE
: секция начинается с новой страницы.WD_SECTION.EVEN_PAGE
: секция начинается на следующей четной страницы.WD_SECTION.ODD_PAGE
: секция начинается на следующей нечетной странице.Пример:
from docx.enum.section import WD_SECTION section = document.sections[0] section.start_type = WD_SECTION.NEW_PAGE
WD_ORIENTATION
:Короткая ссылка для импорта WD_ORIENT
- это перечисление, которое задает ориентацию макета страницы.
WD_ORIENT.PORTRAIT
: Книжная ориентация.WD_ORIENT.LANDSCAPE
: Альбомная ориентация.Пример:
from docx.enum.section import WD_ORIENT section = document.sections[-1] section.orientation = WD_ORIENT.LANDSCAPE
WD_PARAGRAPH_ALIGNMENT
:Короткая ссылка для импорта WD_ALIGN_PARAGRAPH
- это перечисление, которое задает тип выравнивание всего текста в абзаце/параграфе.
WD_ALIGN_PARAGRAPH.LEFT
- по левому краю;WD_ALIGN_PARAGRAPH.CENTER
- по центру;WD_ALIGN_PARAGRAPH.RIGHT
- по правому краю;WD_ALIGN_PARAGRAPH.JUSTIFY
- по ширине;WD_ALIGN_PARAGRAPH.DISTRIBUTE
- символы распределяются так, чтобы заполнить всю ширину абзаца;WD_ALIGN_PARAGRAPH.JUSTIFY_MED
- оправдано со средней степенью сжатия символов;WD_ALIGN_PARAGRAPH.JUSTIFY_HI
- оправдано высокой степенью сжатия символов;WD_ALIGN_PARAGRAPH.JUSTIFY_LOW
- оправдано с низким коэффициентом сжатия символов.Пример:
from docx.enum.text import WD_ALIGN_PARAGRAPH paragraph = document.add_paragraph() paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
WD_LINE_SPACING
:Перечисление WD_LINE_SPACING
задает формат межстрочного интервала, применяемый к объекту форматирования абзаца ParagraphFormat.line_spacing_rule
.
Устанавливаемые значения:
WD_LINE_SPACING.ONE_POINT_FIVE
- Space-and-a-half line spacing.WD_LINE_SPACING.AT_LEAST
- межстрочный интервал всегда должен быть не менее указанного значения;WD_LINE_SPACING.DOUBLE
- двойной межстрочный интервал;WD_LINE_SPACING.EXACTLY
- межстрочный интервал - это точно указанная величина;WD_LINE_SPACING.MULTIPLE
- межстрочный интервал указывается как кратный высоте строки. Изменение размера шрифта пропорционально изменит межстрочный интервал;WD_LINE_SPACING.SINGLE
- одинарный межстрочный интервал (по умолчанию).Пример:
from docx.enum.text import WD_LINE_SPACING paragraph = document.add_paragraph() paragraph.paragraph_format.line_spacing_rule = WD_LINE_SPACING.EXACTLY
WD_UNDERLINE
:Перечисление WD_UNDERLINE
задает стиль подчеркивания, которое применяется к серии символов/слов текста.
Устанавливаемые значения:
WD_UNDERLINE.NONE
- без подчеркивания. Этот параметр отменяет любое унаследованное значение подчеркивания, поэтому может использоваться для удаления подчеркивания из серии, которая наследует подчеркивание из содержащего его абзаца. Обратите внимание, что это не то же самое, что присвоение None
для Run.underline
. Значение None
, допустимо для присваивания, но заставляет прогон наследовать значение подчеркивания. Назначение WD_UNDERLINE.NONE
приводит к безоговорочному отключению подчеркивания.WD_UNDERLINE.SINGLE
- подчеркивание одной линией. Обратите внимание, что этот параметр доступен только для присваивания в том смысле, что для прогона с этим параметром возвращается True
(а не значение в виде WD_UNDERLINE.SINGLE
).WD_UNDERLINE.WORDS
- подчеркивает только слова (т.е. не подчеркивает пробелы между словами).WD_UNDERLINE.DOUBLE
- подчеркивание двойной линией.WD_UNDERLINE.DOTTED
- подчеркивание точками.WD_UNDERLINE.THICK
- подчеркивание одной толстой линией.WD_UNDERLINE.DASH
- подчеркивание пунктирной линией.WD_UNDERLINE.DOT_DASH
- подчеркивание чередующимся точки и тире.WD_UNDERLINE.DOT_DOT_DASH
- подчеркивание точка-точка-тире.WD_UNDERLINE.WAVY
- подчеркивание одной волнистой линией.WD_UNDERLINE.DOTTED_HEAVY
- подчеркивание жирными точкамиWD_UNDERLINE.DASH_HEAVY
- подчеркивание жирной пунктирной линией.WD_UNDERLINE.DOT_DASH_HEAVY
- чередующиеся жирные точки и жирные тире.WD_UNDERLINE.DOT_DOT_DASH_HEAVY
- чередующиеся жирные точка-точка-тире.WD_UNDERLINE.WAVY_HEAVY
- жирная волнистая линия.WD_UNDERLINE.DASH_LONG
- длинные пунктирные линии.WD_UNDERLINE.WAVY_DOUBLE
- двойная волнистая линия.WD_UNDERLINE.DASH_LONG_HEAVY
- длинные жирные пунктирные линии.Смотрим пример:
import docx from docx.enum.text import WD_UNDERLINE doc = docx.Document() p = doc.add_paragraph() p.add_run('Подчеркивает только слова.\n').underline = WD_UNDERLINE.WORDS p.add_run('Подчеркивает точками.\n').underline = WD_UNDERLINE.DOTTED p.add_run('Подчеркивает двойной линией.\n').underline = WD_UNDERLINE.DOUBLE p.add_run('Подчеркивает волнистой линией.').underline = WD_UNDERLINE.WAVY doc.save('test.docx')
WD_COLOR_INDEX
:Перечисление WD_COLOR_INDEX
задает применяемый стандартный предустановленный цвет в MS Word. Используется для выделения шрифтов и, возможно, других объектов.
Устанавливаемые значения:
WD_COLOR_INDEX.AUTO
- Автоматический цвет. По умолчанию, обычно черный.WD_COLOR_INDEX.BLACK
- Черный цвет.WD_COLOR_INDEX.BLUE
- Синий цветWD_COLOR_INDEX.BRIGHT_GREEN
- Ярко-зеленый цвет.WD_COLOR_INDEX.DARK_BLUE
- Цвет темно-синий.WD_COLOR_INDEX.DARK_RED
- Темно-красный цвет.WD_COLOR_INDEX.DARK_YELLOW
- Темно-желтый цвет.WD_COLOR_INDEX.GRAY_25
- 25% серого цвета.WD_COLOR_INDEX.GRAY_50
- 50% серого цвета.WD_COLOR_INDEX.GREEN
- Зеленый цвет.WD_COLOR_INDEX.PINK
- Розовый цвет.WD_COLOR_INDEX.RED
- Красный цвет.WD_COLOR_INDEX.TEAL
- WD_COLOR_INDEX.TURQUOISE
- Бирюзовый цвет.WD_COLOR_INDEX.VIOLET
- Фиолетовый цвет.WD_COLOR_INDEX.WHITE
- Белый цвет.WD_COLOR_INDEX.YELLOW
- Желтый цвет.Пример:
import docx from docx.enum.text import WD_COLOR_INDEX doc = docx.Document() p = doc.add_paragraph() p.add_run('Выделение ') p.add_run('текста').font.highlight_color = WD_COLOR_INDEX.YELLOW p.add_run(' цветом.') doc.save('test.docx')
WD_TABLE_ALIGNMENT
:Перечисление WD_TABLE_ALIGNMENT
задает тип выравнивания таблицы.
WD_TABLE_ALIGNMENT.LEFT
: По левому краю.WD_TABLE_ALIGNMENT.CENTER
: По центру.WD_TABLE_ALIGNMENT.RIGHT
: По правому краю.Пример:
from docx.enum.table import WD_TABLE_ALIGNMENT table = document.add_table(3, 3) table.alignment = WD_TABLE_ALIGNMENT.CENTER
WD_ROW_HEIGHT_RULE
:Короткая ссылка для импорта WD_ROW_HEIGHT
, задает правило определения высоты строки таблицы.
WD_ROW_HEIGHT.AUTO
: Высота строки настраивается таким образом, чтобы соответствовать самому высокому значению в строке.WD_ROW_HEIGHT.AT_LEAST
: Высота строки должна быть не менее минимального заданного значения.WD_ROW_HEIGHT.EXACTLY
: Высота строки - это точное значение.Пример:
from docx.enum.table import WD_ROW_HEIGHT table = document.add_table(3, 3) table.rows[0].height_rule = WD_ROW_HEIGHT.EXACTLY
WD_CELL_VERTICAL_ALIGNMENT
:Короткая ссылка для импорта WD_ALIGN_VERTICAL
задает вертикальное выравнивание текста в одной или нескольких ячейках таблицы.
WD_ALIGN_VERTICAL.TOP
: Текст выровнен по верхней границе ячейки.WD_ALIGN_VERTICAL.CENTER
: Текст выровнен по центру ячейки.WD_ALIGN_VERTICAL.BOTTOM
: Текст выравнивается по нижней границе ячейки.WD_ALIGN_VERTICAL.BOTH
: Это спецификация OpenXML, но не в самого MS Word. Неясно, какое поведение вызывает этот параметр. Если узнаете, пожалуйста, сообщите нам об этом, и мы обновим документацию. В противном случае, лучше избегать этого варианта.Пример:
from docx.enum.table import WD_ALIGN_VERTICAL table = document.add_table(3, 3) table.cell(0, 0).vertical_alignment = WD_ALIGN_VERTICAL.BOTTOM
WD_STYLE_TYPE
:Перечисление WD_STYLE_TYPE
задает один из четырех типов стиля: абзац, символ, список или таблица..
CHARACTERCharacter style.LISTList style.PARAGRAPHParagraph style.TABLETable style.
WD_STYLE_TYPE.CHARACTER
: Стиль слова/символа.WD_STYLE_TYPE.LIST
: Стиль списка.WD_STYLE_TYPE.PARAGRAPH
: Стиль абзаца/параграфа.WD_STYLE_TYPE.TABLE
: Стиль таблицы.Пример:
from docx import Document from docx.enum.style import WD_STYLE_TYPE styles = Document().styles assert styles[0].type == WD_STYLE_TYPE.PARAGRAPH