From 9c7f73f5884f06084143ffab5470b403fc9e7ef1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 28 Aug 2026 19:24:41 +0800 Subject: [PATCH] =?UTF-8?q?'=E4=BF=AE=E5=A4=8Dbug=EF=BC=9A=E5=BD=93docx?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E9=87=8C=E5=AD=98=E5=9C=A8=E7=A9=BA=E7=9A=84?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E6=97=B6=EF=BC=8C=E8=A7=A3=E6=9E=90=E6=8A=A5?= =?UTF-8?q?=E9=94=99'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mammoth/docx/body_xml.py | 8 ++++---- mammoth/docx/relationships_xml.py | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mammoth/docx/body_xml.py b/mammoth/docx/body_xml.py index 2a1ffaff..2f7a38fc 100644 --- a/mammoth/docx/body_xml.py +++ b/mammoth/docx/body_xml.py @@ -487,7 +487,7 @@ def create(**kwargs): **kwargs )) - if relationship_id is not None: + if relationship_id is not None and relationships.find_target_by_relationship_id(relationship_id) is not None: href = relationships.find_target_by_relationship_id(relationship_id) if anchor is not None: href = replace_fragment(href, anchor) @@ -578,9 +578,9 @@ def _read_image(image_file, alt_text): def _find_blip_image(element): embed_relationship_id = element.attributes.get("r:embed") link_relationship_id = element.attributes.get("r:link") - if embed_relationship_id is not None: + if embed_relationship_id is not None and relationships.find_target_by_relationship_id(embed_relationship_id) is not None: return _find_embedded_image(embed_relationship_id) - elif link_relationship_id is not None: + elif link_relationship_id is not None and relationships.find_target_by_relationship_id(link_relationship_id) is not None: return _find_linked_image(link_relationship_id) else: return None @@ -609,7 +609,7 @@ def open_image(): def read_imagedata(element): relationship_id = element.attributes.get("r:id") - if relationship_id is None: + if relationship_id is None or relationships.find_target_by_relationship_id(relationship_id) is None: warning = results.warning("A v:imagedata element without a relationship ID was ignored") return _empty_result_with_message(warning) else: diff --git a/mammoth/docx/relationships_xml.py b/mammoth/docx/relationships_xml.py index 555ba2dc..8bdbb8b2 100644 --- a/mammoth/docx/relationships_xml.py +++ b/mammoth/docx/relationships_xml.py @@ -12,10 +12,10 @@ def __init__(self, relationships): self._targets_by_type[relationship.type].append(relationship.target) def find_target_by_relationship_id(self, key): - return self._targets_by_id[key] + return self._targets_by_id.get(key, None) def find_targets_by_type(self, relationship_type): - return self._targets_by_type[relationship_type] + return self._targets_by_type.get(relationship_type, []) Relationships.EMPTY = Relationships([]) @@ -26,7 +26,7 @@ def find_targets_by_type(self, relationship_type): def read_relationships_xml_element(element): children = element.find_children("relationships:Relationship") - return Relationships(list(map(_read_relationship, children))) + return Relationships(list(filter(lambda x: x.target not in ('../NULL', 'NULL', 'word/../NULL'), map(_read_relationship, children)))) def _read_relationship(element):