diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java | 11 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 9 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java index 5f93c4a..e4c5b5f 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java @@ -381,10 +381,13 @@ public class BodyXmlReader { } private ReadResult readImagedata(XmlElement element) { - Optional<String> title = element.getAttributeOrNone("o:title"); - String relationshipId = element.getAttribute("r:id"); - String imagePath = relationshipIdToDocxPath(relationshipId); - return readImage(imagePath, title, () -> DocxFiles.getInputStream(file, imagePath)); + return element.getAttributeOrNone("r:id") + .map(relationshipId -> { + Optional<String> title = element.getAttributeOrNone("o:title"); + String imagePath = relationshipIdToDocxPath(relationshipId); + return readImage(imagePath, title, () -> DocxFiles.getInputStream(file, imagePath)); + }) + .orElse(ReadResult.emptyWithWarning("A v:imagedata element without a relationship ID was ignored")); } private ReadResult readInline(XmlElement element) { diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java index 0b1857e..2124c67 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -560,6 +560,15 @@ public class BodyXmlTests { } @Test + public void whenImagedataElementHasNoRelationshipIdThenItIsIgnoredWithError() throws IOException { + XmlElement element = element("v:imagedata"); + + assertThat( + readAll(bodyReader(), element), + isInternalResult(equalTo(list()), list("A v:imagedata element without a relationship ID was ignored"))); + } + + @Test public void canReadInlinePictures() throws IOException { assertCanReadEmbeddedImage(image -> inlineImageXml(embeddedBlipXml(image.relationshipId), image.altText)); |
