From 6dd319ca5eebe1f97b9558b5b45bbccf402eb319 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 23:19:28 +0000 Subject: Emit warning when reading image of unsupported content type --- src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | 14 +++++++++++++- src/main/java/org/zwobble/mammoth/docx/ReadResult.java | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 333780a..e911a63 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -1,5 +1,6 @@ package org.zwobble.mammoth.docx; +import com.google.common.collect.ImmutableSet; import org.zwobble.mammoth.documents.*; import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.results.Warning; @@ -11,6 +12,7 @@ import org.zwobble.mammoth.xml.XmlElementList; import org.zwobble.mammoth.xml.XmlNode; import java.util.Optional; +import java.util.Set; import java.util.function.Function; import static com.google.common.collect.Iterables.filter; @@ -22,6 +24,10 @@ import static org.zwobble.mammoth.util.MammothLists.list; import static org.zwobble.mammoth.util.MammothStrings.trimLeft; public class BodyXmlReader { + private static final Set IMAGE_TYPES_SUPPORTED_BY_BROWSERS = ImmutableSet.of( + "image/png", "image/gif", "image/jpeg", "image/svg+xml", "image/tiff"); + + private final Styles styles; private final Numbering numbering; private final Relationships relationships; @@ -278,7 +284,13 @@ public class BodyXmlReader { private ReadResult readImage(String imagePath, Optional altText, InputStreamSupplier open) { Optional contentType = contentTypes.findContentType(imagePath); Image image = new Image(altText, contentType, open); - return success(image); + + String contentTypeString = contentType.orElse("(unknown)"); + if (IMAGE_TYPES_SUPPORTED_BY_BROWSERS.contains(contentTypeString)) { + return success(image); + } else { + return ReadResult.withWarning(image, warning("Image of type " + contentTypeString + " is unlikely to display in web browsers")); + } } private String relationshipIdToDocxPath(String relationshipId) { diff --git a/src/main/java/org/zwobble/mammoth/docx/ReadResult.java b/src/main/java/org/zwobble/mammoth/docx/ReadResult.java index 31bbf2a..69c4d1b 100644 --- a/src/main/java/org/zwobble/mammoth/docx/ReadResult.java +++ b/src/main/java/org/zwobble/mammoth/docx/ReadResult.java @@ -49,6 +49,10 @@ public class ReadResult { return new ReadResult(list(), list(), list(warning)); } + public static ReadResult withWarning(DocumentElement element, Warning warning) { + return new ReadResult(list(element), list(), list(warning)); + } + private final List elements; private final List extra; private final List warnings; -- cgit v1.2.3