phaggi
@phaggi
лужу, паяю, ЭВМы починяю

Как из python удалить из docx поля и при этом сохранить внесенный туда текст?

По рецепту zoldaten я средствами python при помощи библиотеки docxtemplate открываю docx, из словаря раскладываются значения в управляемые поля документа (или как это называется? ContentControls?)
Код
context = {'Договор': agreement,
           'Название_подрядчика': opponent_name,
           'Подрядчик_коротко': opponent_short_name,
           'ГД_подрядчика': directors_name}


def make_next_doc(path_to_temple: Path, 
                  context: dict, 
                  output_name: str, 
                  directory: Path):
    doc = DocxTemplate(path_to_temple/"template.docx")
    doc.render(context)
    doc.save(directory/f"{output_name}.docx")

При этом в файле template.docx должны стоять поля-формулы с примерно таким содержанием:
{{Договор}}
- вместо них подставляется значение из agreement.
Это всё работает нормально.
Но есть нюанс...
При последующем открытии документа все эти поля подсвечиваются, а word переходит в режим "конструктора". Это и выглядит не очень, и вообще не порядок. Пользователи пугаются.
Как бы убрать все эти поля, но оставить то, что туда внес скрипт.

Копаясь в инете, нашел, что вроде как можно сделать это командой Word-а "RemoveContentControlsAndKeepContents".

Но как эта команда работает из Python? Может, через win32 и Word.Application заморочиться? Но как, я что-то не догоняю... всю ночь красноглазил.
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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