From ba91bed42994af2425540a60b1797d93347e8900 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 1 Nov 2021 19:34:28 +0000 Subject: Handle a:blip elements without image file --- mammoth/docx/body_xml.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'mammoth') 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): -- cgit v1.2.3