aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java11
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java9
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));