使用 python-docx 将整页图像添加到 docx

Prepending a full-page image to docx using python-docx

我正在尝试使用 python-docx 为现有的 docx 添加整页图像,没有边距。

据我了解,代码应该是这样的(使用建议的解决方案

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. 新部分创建了脚本的开头,在文档的开头创建了一个空白页。

我该如何正确操作?谢谢

调用 .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')