Как пронумеровать страницы python-docx
Собственно, сам вопрос: Как пронумеровать страницы в нижнем колонтитуле при помощи python-docx?
Почитал про sections И смог задать общий для всех страниц колонтитул. Но как это сделать для каждой страницы? Чтобы у 1 страницы был номер 1, у второй 2 и тд
Ответы (1 шт):
Автор решения: Serg Bocharov
→ Ссылка
Максимально упростил код, дальше надеюсь сами разберетесь:
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml import OxmlElement, ns
def create_element(name):
return OxmlElement(name)
def create_attribute(element, name, value):
element.set(ns.qn(name), value)
def add_page_number(paragraph):
# выравниваем параграф по центру
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# запускаем динамическое обновление параграфа
page_num_run = paragraph.add_run()
# обозначаем начало позиции вывода
fldChar1 = create_element('w:fldChar')
create_attribute(fldChar1, 'w:fldCharType', 'begin')
# задаем вывод текущего значения страницы PAGE (всего страниц NUMPAGES)
instrText = create_element('w:instrText')
create_attribute(instrText, 'xml:space', 'preserve')
instrText.text = "PAGE"
# обозначаем конец позиции вывода
fldChar2 = create_element('w:fldChar')
create_attribute(fldChar2, 'w:fldCharType', 'end')
# добавляем все в наш параграф (который формируется динамически)
page_num_run._r.append(fldChar1)
page_num_run._r.append(instrText)
page_num_run._r.append(fldChar2)
doc = Document()
add_page_number(doc.sections[0].footer.paragraphs[0])
doc.save("your_doc.docx")