always-prog
@always-prog
Я программист. Python, JavaScript, Django.

Как сделать автосоздание table of contents в word (OOXML тег)?

Привет.
Я пишу на python экспортер в .docx.
И на финальной стадии написания, мне осталось лишь сделать table of contents.
Я нашел как сделать ToC (table of contetns) элемент:
fldChar = OxmlElement('w:fldChar')  # creates a new element
fldChar.set(qn('w:fldCharType'), 'begin')  # sets attribute on element
fldChar.set(qn('w:dirty'), 'true')
instrText = OxmlElement('w:instrText')
instrText.set(qn('xml:space'), 'preserve')  # sets attribute on element
instrText.text = r'TOC \o "1-3" \h \z \u' # change 1-3 depending on heading levels you need
fldChar2 = OxmlElement('w:fldChar')
fldChar2.set(qn('w:fldCharType'), 'separate')
fldChar3 = OxmlElement('w:t')
fldChar3.text = "Right-click to update field."
fldChar2.append(fldChar3)

fldChar4 = OxmlElement('w:fldChar')
fldChar4.set(qn('w:fldCharType'), 'end')

r_element = run._r
r_element.append(fldChar)
r_element.append(instrText)
r_element.append(fldChar2)
r_element.append(fldChar4)

Чтобы обновить этот table of contents, я нашел такой:

word = win32com.client.DispatchEx("Word.Application")
doc = word.Documents.Open(docx_file)
doc.TablesOfContents(1).Update()
doc.Close(SaveChanges=True)
word.Quit()

Этот код работает только для windows, т.к. используется библиотека win32com.

Соответсвенно мне нужно другое решение.
Я прочитал что есть специальный тег в table of contents который при открытии документа обновляет сам table of contents, тем самым генерируя его.

Не уверен, что такое есть, если есть то вопрос: какой это тег?
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы