我有一个基础.docx,我需要根据具体情况更改页眉/页脚图像。我读过python-docx 还没有处理页眉/页脚但是它确实处理了图片。
我无法解决的问题是如何更换它们。
我发现文件中的图片._package.parts对象为ImagePart,我甚至可以尝试通过partname
属性识别图像。
我无法找到的是如何替换图像。我尝试替换ImagePart ._blob和._image属性,但保存后没有任何区别。
那么,使用python-docx将一个Image 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')
谢谢, 渣
答案 0 :(得分:1)
没有要求使用python-docx。我找到了另一个用于搞乱docx文件的Python库,称为“paradocx”,似乎有点放弃它可以满足我的需要。
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')