Обновление полей с помощью python -docx - PullRequest
0 голосов
/ 18 июня 2020

Я создаю текстовый документ из шаблона с помощью python -docx, и мне нужно обновить некоторые поля, встроенные в разделы обложки, верхнего и нижнего колонтитула документа.

Я искал везде и я не нашел ни одной топи c, объясняющей, как обновлять поля в MS Word с помощью python -docx. Это еще не реализовано?

Поля, о которых я говорю, находятся в Advanced Document Properties / Custom.

Поля, настроенные в меню Advanced Document Properties

Добавление полей в документ

Пример полей в документе

Ответы [ 2 ]

1 голос
/ 26 июня 2020

Решение 2

Вы можете изменить текст соответствующих настраиваемых свойств, просмотрев его ключевое слово.

Пример:

from re import compile # regex module to emulate keyword search by pattern 


keyword = re.compile(r'\s*Creator: (?P<creator_name>\w+)\s*')
word_replacement = 'Daniel Serrano'


for _p in doc.paragraphs: # doc = docx.Document(...) 

    found_word = keyword.match(_p.text)

    if found_word: 

        for _r in _p.runs: 
            _r.text = _r.text.replace(
                found_word.group('creator_name'), 
                word_replacement
            )

Лучше избегать изменения набора на самом _p.text, хотя это выполнимо, так как это может переформатировать прогон (ie. жирный, itali c, подчеркивание опущено).

1 голос
/ 26 июня 2020

Решение 1

user:1902513 или scanny еще реализовало атрибут custom_properties в основном репозитории python-docx - и, вероятно, не в ближайшем будущем, поскольку он сказал, что разработчики не активны для изменения репозитория.

Я предлагаю переустановить модуль, но из другой копии репозитория, созданной user:652546 или renejsum; здесь .

>> source of solution <<

Пример использования такой же, как в этот скрипт .

...