From 56f4ecc7ebe8a19111daf54e505bc68b6c13c2e9 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 20 Feb 2016 11:46:39 +0000 Subject: Read content types from document --- .../java/org/zwobble/mammoth/docx/DocumentReader.java | 8 +++++++- .../java/org/zwobble/mammoth/tests/MammothTests.java | 7 +++++++ .../test-data/tiny-picture-custom-content-type.docx | Bin 0 -> 10876 bytes 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/test-data/tiny-picture-custom-content-type.docx diff --git a/src/main/java/org/zwobble/mammoth/docx/DocumentReader.java b/src/main/java/org/zwobble/mammoth/docx/DocumentReader.java index 6d5af48..06d8ad5 100644 --- a/src/main/java/org/zwobble/mammoth/docx/DocumentReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/DocumentReader.java @@ -20,7 +20,7 @@ public class DocumentReader { public static Result readDocument(DocxFile zipFile) { Styles styles = readStyles(zipFile); Numbering numbering = Numbering.EMPTY; - ContentTypes contentTypes = ContentTypes.DEFAULT; + ContentTypes contentTypes = readContentTypes(zipFile); FileReader fileReader = uri -> { throw new UnsupportedOperationException(); }; @@ -52,6 +52,12 @@ public class DocumentReader { .orElse(Styles.EMPTY); } + private static ContentTypes readContentTypes(DocxFile file) { + return tryParseOfficeXml(file, "[Content_Types].xml") + .map(ContentTypesXml::readContentTypesXmlElement) + .orElse(ContentTypes.DEFAULT); + } + private static Relationships readRelationships(DocxFile zipFile, String name) { return tryParseOfficeXml(zipFile, "word/_rels/" + name + ".xml.rels") .map(RelationshipsXml::readRelationshipsXmlElement) diff --git a/src/test/java/org/zwobble/mammoth/tests/MammothTests.java b/src/test/java/org/zwobble/mammoth/tests/MammothTests.java index 0a61661..46bafb2 100644 --- a/src/test/java/org/zwobble/mammoth/tests/MammothTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/MammothTests.java @@ -46,6 +46,13 @@ public class MammothTests { deepEquals(success("

"))); } + @Test + public void contentTypesAreRead() { + assertThat( + convertToHtml("tiny-picture-custom-content-type.docx"), + deepEquals(success("

"))); + } + @Test public void footnotesAreAppendedToText() { assertThat( diff --git a/src/test/resources/test-data/tiny-picture-custom-content-type.docx b/src/test/resources/test-data/tiny-picture-custom-content-type.docx new file mode 100644 index 0000000..3638f88 Binary files /dev/null and b/src/test/resources/test-data/tiny-picture-custom-content-type.docx differ -- cgit v1.2.3