Я работаю над программой на Python, которой нужно добавлять тексты подписей в MS Word в рисунки и таблицы (с нумерацией). Однако после добавления поля оно не появляется в моем Word-документе до тех пор, пока я не обновлю поле (это просто пустое место в моем документе, пока я не обновлю поле, а затем оно перейдет, например, к «2»).
Это мой код для добавления поля:
def add_caption_number(self, field_code):
""" Add a caption number for the field
:argument
field_code: [string] the type of field e.g. 'Figure', 'Table'...
"""
# Set the pointer to the last paragraph (e.g. the 'Figure ' caption text)
run = self.last_paragraph.add_run()
r = run._r
# Add a Figure Number field xml element
fldChar = OxmlElement("w:fldChar")
fldChar.set(qn("w:fldCharType"), "begin")
r.append(fldChar)
instrText = OxmlElement("w:instrText")
instrText.text = " SEQ %s \* ARABIC" % field_code
r.append(instrText)
fldChar = OxmlElement("w:fldChar")
fldChar.set(qn("w:fldCharType"), "end")
r.append(fldChar)
self.last_paragraph
- это последний добавленный абзац, а field code
предназначен для выбора добавления подписи к рисунку или таблице.
Я нашел пример для обновления полей, но при открытии документа открывается следующее окно:
def update_fields(save_path):
""" Automatically updates the fields when opening the word document """
namespace = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
doc = DocxTemplate(save_path)
element_updatefields = lxml.etree.SubElement(
doc.settings.element, f"{namespace}updateFields"
)
element_updatefields.set(f"{namespace}val", "true")
doc.save(save_path)
Есть ли способ сделать это без всплывающего окна и без добавления макросов в документ Word? Это должно работать на MacOS и Windows между прочим.
Любая помощь будет принята с благодарностью! :)