2

我有一个基础 .docx,我需要根据具体情况更改页眉/页脚图像。我读到 python-docx还没有处理页眉/页脚,但它确实处理了图片。

我无法解决的是如何替换它们。

我在文件 ._package.parts 对象中找到了图片作为 ImagePart,我什至可以尝试通过其partname属性来识别图像。

我以任何方式找不到的是如何替换图像。我尝试替换 ImagePart ._blob 和 ._image 属性,但保存后没有区别。

那么,使用 python-docx 将一个图像 blob 替换为另一个图像 blob 的“好”方法是什么?(这是我需要做的唯一改变)。

当前代码是:

d = Document(docx='basefile.docx')
parts = d._package
for p in parts:
    if isinstance(p, docx.parts.image.ImagePart) and p.partname.find('image1.png'):
        img = p
        break
img._blob = open('newfile.png', 'r').read()
d.save('newfile.docx')

谢谢,马克

4

1 回答 1

1

不需要使用 python-docx。我发现了另一个用于处理名为“paradocx”的 docx 文件的 Python 库,但它似乎有点被遗弃了,它可以满足我的需要。

python-docx 会更可取,因为该项目似乎更健康,因此仍然需要基于它的解决方案。

无论如何,这是基于 paradocx 的解决方案:

from paradocx import Document
from paradocx.headerfooter import HeaderPart

template = 'template.docx'
newimg = open('new_file.png', 'r')

doc = Document.from_file(template)
header = doc.get_parts_by_class(HeaderPart).next()
img = header.related('http://schemas.openxmlformats.org/officeDocument/2006/relationships/image')[0]

img.data = newimg.read()
newimg.close()

doc.save('prueba.docx')
于 2015-01-18T18:25:51.253 回答