aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 22:38:53 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 22:38:53 +0000
commit8d01886d494d8251c0825ca7d6df214d19415325 (patch)
tree4a6755fff27f997c815418dabba20840aafd2322 /src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
parent6ae918357de9c9ff0b84e70016ea08aefeb48dea (diff)
Read v:imagedata
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
index 19f649a..4a0a169 100644
--- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
@@ -17,16 +17,27 @@ import static org.zwobble.mammoth.docx.ReadResult.EMPTY_SUCCESS;
import static org.zwobble.mammoth.docx.ReadResult.success;
import static org.zwobble.mammoth.results.Warning.warning;
import static org.zwobble.mammoth.util.MammothLists.list;
+import static org.zwobble.mammoth.util.MammothStrings.trimLeft;
public class BodyXmlReader {
private final Styles styles;
private final Numbering numbering;
private final Relationships relationships;
-
- public BodyXmlReader(Styles styles, Numbering numbering, Relationships relationships) {
+ private final ContentTypes contentTypes;
+ private final DocxFile file;
+
+ public BodyXmlReader(
+ Styles styles,
+ Numbering numbering,
+ Relationships relationships,
+ ContentTypes contentTypes,
+ DocxFile file)
+ {
this.styles = styles;
this.numbering = numbering;
this.relationships = relationships;
+ this.contentTypes = contentTypes;
+ this.file = file;
}
public ReadResult readElement(XmlElement element) {
@@ -62,6 +73,9 @@ public class BodyXmlReader {
case "w:pict":
return readPict(element);
+ case "v:imagedata":
+ return readImagedata(element);
+
case "w:ins":
case "w:smartTag":
case "w:drawing":
@@ -228,6 +242,16 @@ public class BodyXmlReader {
return readElements(element.children()).toExtra();
}
+ private ReadResult readImagedata(XmlElement element) {
+ Optional<String> title = element.getAttributeOrNone("o:title");
+ String relationshipId = element.getAttribute("r:id");
+ Relationship relationship = relationships.findRelationshipById(relationshipId);
+ String imagePath = "word/" + trimLeft(relationship.getTarget(), '/');
+ Optional<String> contentType = contentTypes.findContentType(imagePath);
+ Image image = new Image(title, contentType, () -> file.getInputStream(imagePath));
+ return success(image);
+ }
+
private Optional<String> readVal(XmlElementLike element, String name) {
return element.findChildOrEmpty(name).getAttributeOrNone("w:val");
}