将图像插入现有word文件时文件损坏



应用于现有文件的以下代码适用于2个图像,但超过该文件被标记为损坏(尽管它可以在word中完全恢复):

import docx
docTemplate = "TestTemplate.docx"
# docx job: add test subsections + images
doc_docx = docx.Document(docTemplate)
#doc_docx = docx.Document()
p = doc_docx.add_paragraph()
wp = p.add_run()
wp.add_picture('image.png')
wp.add_break()
wp.add_picture('image.png')
wp.add_break()
wp.add_picture('image.png')
doc_docx.save('TestFile2.docx')

doc_docx.part.blob的内容可在pastebin上查看

看起来docTemplate文档已经包含了一些对象。感谢@Tores76在python-docx github上的回答,我可以解决"文件损坏"问题。问题。这意味着它可能是由于重复的docPr id

# fix id
doc_element = doc_docx._part._element
docPrs = doc_element.findall('.//' + qn('wp:docPr'))
for docPr in docPrs:
docPr.set('id',str(int(docPr.get('id'))+100000))

最新更新