Пустой (вновь созданный) раздел содержит пустой абзац. Этот тип Word (называемый «историей») должен всегда содержать хотя бы один абзац, в противном случае он недопустим и вызовет ошибку восстановления при загрузке.
Таким образом, вопрос в том, как избежать появления таблицы после этого абзаца.
Первый ответ, который мне нравится больше всего, состоит в том, чтобы вообще избегать использования таблицы. Вы, кажется, используете его только для выравнивания, и использование вкладок делает это лучше по нескольким причинам, одна из которых состоит в том, чтобы избежать небольших смещений из-за внутреннего поля ячейки таблицы.
Этот процесс описан в документации здесь:
https://python -docx.readthedocs.io / о / последняя / пользователя / hdrftr.html # добавление-зональный-заголовок-контент
По сути, вы добавляете вкладки в один существующий абзац и используете символы табуляции для отделения вашего логотипа от заголовка. Если вы используете выровненную по правому краю вкладку, логотип будет хорошо совмещен с правым полем.
from docx.enum.text import WD_TAB_ALIGNMENT
paragraph = section.paragraphs[0]
tab_stops = paragraph.paragraph_format.tab_stops
tab_stops.add_tab_stop(Inches(6.5), WD_TAB_ALIGNMENT.RIGHT)
paragraph.text = "My Header Title\t" # ---note trailing tab char---
run = paragraph.add_run()
run.add_picture("my-logo")
Если вы действительно должны использовать таблицу, вам нужно удалить пустой абзац перед добавлением таблицы, а затем добавить его обратно:
paragraph = header.paragraphs[0]
p = paragraph._p # ---this is the paragraph XML element---
p.getparent().remove(p)
header.add_table(...)
...
header.add_paragraph()