Добавление полностраничного изображения в docx с помощью python -docx - PullRequest
0 голосов
/ 03 мая 2020

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

Насколько я понимаю, код должен go примерно так (используя предлагаемое решение ранее )

from docx import Document
from docx.shared import Inches

document = Document('existing.docx')
new_doc = Document()
new_section = new_doc.add_section()
new_section.left_margin = Inches(0.3)
new_doc.add_picture('frontpage.jpg', width=Inches(8.0))
for element in document.element.body:
     new_doc.element.body.append(element)
# for section in new_doc.sections[1:]:
#   section.left_margin = Inches(1.0)
new_doc.save('new.docx')

С этим связаны две проблемы:

  1. Как есть, скрипт изменяет левое поле для всего документа , Если две последние строки не закомментированы, поле для первой страницы изменяется на 1 дюйм.
  2. В новом разделе, созданном в начале сценария, создается пустая страница в начале документа.

Как мне сделать это правильно? Thx.

1 Ответ

1 голос
/ 04 мая 2020

Вызов .add_section() добавляет новый раздел в конец документа, разделенный разрывом страницы.

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

Существующий отдельный раздел в новом документе по умолчанию доступен на document.sections[0].

from docx import Document
from docx.shared import Inches

target_document = Document()
target_document.sections[0].left_margin = Inches(0.3)
target_document.add_picture('frontpage.jpg', width=Inches(8.0))

new_section = target_document.add_section()
new_section.left_margin = Inches(1.0)

source_document = Document('existing.docx')
for paragraph in source_document.paragraphs:
     target_document.add_paragraph(paragraph.text)
new_doc.save('new.docx')
...