Merge pull request #92 from rgusmero/master

Added possibility to pass a file-like object to replace_pic
This commit is contained in:
Eric Lapouyade 2017-10-06 08:15:50 +02:00 committed by GitHub
commit 12f759cb8e

View File

@ -214,22 +214,29 @@ class DocxTemplate(object):
def replace_pic(self,embedded_file,dst_file):
"""Replace embedded picture with original-name given by embedded_file.
(give only the file basename, not the full path)
The new picture is given by dst_file.
The new picture is given by dst_file (either a filename or a file-like
object)
Notes:
1) embedded_file and dst_file must have the same extension/format
in case dst_file is a file-like object, no check is done on
format compatibility
2) the aspect ratio will be the same as the replaced image
3) There is no need to keep the original file (this is not the case for replace_embedded and replace_media)
"""
emp_path,emb_ext=os.path.splitext(embedded_file)
dst_path,dst_ext=os.path.splitext(dst_file)
if hasattr(dst_file,'read'):
# NOTE: file extension not checked
self.pic_to_replace[embedded_file]=dst_file.read()
else:
emp_path,emb_ext=os.path.splitext(embedded_file)
dst_path,dst_ext=os.path.splitext(dst_file)
if emb_ext!=dst_ext:
raise ValueError('replace_pic: extensions must match')
if emb_ext!=dst_ext:
raise ValueError('replace_pic: extensions must match')
with open(dst_file, 'rb') as fh:
self.pic_to_replace[embedded_file]=fh.read()
with open(dst_file, 'rb') as fh:
self.pic_to_replace[embedded_file]=fh.read()
def replace_embedded(self,src_file,dst_file):
"""Replace one embdded object by another one into a docx