aboutsummaryrefslogtreecommitdiff
path: root/mammoth
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2021-11-01 19:34:28 +0000
committerMichael Williamson <mike@zwobble.org>2021-11-01 19:34:28 +0000
commitba91bed42994af2425540a60b1797d93347e8900 (patch)
treed6b919dd972de7f7a2561419572d37ddcd8b0c14 /mammoth
parent6dee8fcbc822e4fcad128add2637c5955c694a7f (diff)
Handle a:blip elements without image file
Diffstat (limited to 'mammoth')
-rw-r--r--mammoth/docx/body_xml.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/mammoth/docx/body_xml.py b/mammoth/docx/body_xml.py
index 4c66ae8..8d727a5 100644
--- a/mammoth/docx/body_xml.py
+++ b/mammoth/docx/body_xml.py
@@ -438,10 +438,16 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f
return _ReadResult.concat(lists.map(lambda blip: _read_blip(blip, alt_text), blips))
def _read_blip(element, alt_text):
- return _read_image(lambda: _find_blip_image(element), alt_text)
+ blip_image = _find_blip_image(element)
- def _read_image(find_image, alt_text):
- image_path, open_image = find_image()
+ if blip_image is None:
+ warning = results.warning("Could not find image file for a:blip element")
+ return _empty_result_with_message(warning)
+ else:
+ return _read_image(blip_image, alt_text)
+
+ def _read_image(image_file, alt_text):
+ image_path, open_image = image_file
content_type = content_types.find_content_type(image_path)
image = documents.image(alt_text=alt_text, content_type=content_type, open=open_image)
@@ -459,6 +465,8 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f
return _find_embedded_image(embed_relationship_id)
elif link_relationship_id is not None:
return _find_linked_image(link_relationship_id)
+ else:
+ return None
def _find_embedded_image(relationship_id):
target = relationships.find_target_by_relationship_id(relationship_id)
@@ -489,7 +497,7 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f
return _empty_result_with_message(warning)
else:
title = element.attributes.get("o:title")
- return _read_image(lambda: _find_embedded_image(relationship_id), title)
+ return _read_image(_find_embedded_image(relationship_id), title)
def note_reference_reader(note_type):
def note_reference(element):