Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def add_images(self, doc, element):
"""Add images from the given document used in the given element."""
blips = xpath(
element, '(.//a:blip|.//asvg:svgBlip)[@r:embed]')
for blip in blips:
rid = blip.get('{%s}embed' % NS['r'])
img_part = doc.part.rels[rid].target_part
new_img_part = self.pkg.image_parts._get_by_sha1(img_part.sha1)
if new_img_part is None:
image = ImageWrapper(img_part)
new_img_part = self.pkg.image_parts._add_image_part(image)
new_rid = self.doc.part.relate_to(new_img_part, RT.IMAGE)
blip.set('{%s}embed' % NS['r'], new_rid)
# handle external reference as images can be embedded and have an
# external reference
rid = blip.get('{%s}link' % NS['r'])
if rid:
rel = doc.part.rels[rid]
new_rel = self.add_relationship(None, self.doc.part, rel)
blip.set('{%s}link' % NS['r'], new_rel.rId)
def add_shapes(self, doc, element):
shapes = xpath(element, './/v:shape/v:imagedata')
for shape in shapes:
rid = shape.get('{%s}id' % NS['r'])
img_part = doc.part.rels[rid].target_part
new_img_part = self.pkg.image_parts._get_by_sha1(img_part.sha1)
if new_img_part is None:
image = ImageWrapper(img_part)
new_img_part = self.pkg.image_parts._add_image_part(image)
new_rid = self.doc.part.relate_to(new_img_part, RT.IMAGE)
shape.set('{%s}id' % NS['r'], new_rid)