@@ -197,10 +197,21 @@ writeDocx opts doc@(Pandoc meta _) = do
197197 map (\x -> (maybe "" ("/word/" ++) $ extractTarget x,
198198 "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml")) footers) ++
199199 map mkImageOverride imgs
200+ let imageDefaults = map (\(x,y) -> mknode "Default"
201+ [("Extension",x),("ContentType",y)] ())
202+ [("jpg","image/jpeg")
203+ ,("jpeg","image/jpeg")
204+ ,("png","image/png")
205+ ,("svg","image/svg+xml")
206+ ,("tif","image/tiff")
207+ ,("tiff","image/tiff")
208+ ,("bmp","image/x-ms-bmp")
209+ ,("gif","image/gif")
210+ ]
200211 let defaultnodes = [mknode "Default"
201212 [("Extension","xml"),("ContentType","application/xml")] (),
202213 mknode "Default"
203− [("Extension","rels"),("ContentType","application/vnd.openxmlformats-package.relationships+xml")] ()]
214+ [("Extension","rels"),("ContentType","application/vnd.openxmlformats-package.relationships+xml")] ()] ++ imageDefaults
204215 let contentTypesDoc = mknode "Types" [("xmlns","http://schemas.openxmlformats.org/package/2006/content-types")] $ defaultnodes ++ overrides
205216 let contentTypesEntry = toEntry "[Content_Types].xml" epochtime
206217 $ renderXml contentTypesDoc
@@ -311,12 +322,13 @@ writeDocx opts doc@(Pandoc meta _) = do
311322 headerFooterEntries <- mapM (entryFromArchive refArchive) $
312323 mapMaybe (\e -> fmap ("word/" ++) $ extractTarget e)
313324 (headers ++ footers)
314− let miscRels = [ f | f <- filesInArchive refArchive
315− , "word/_rels/" `isPrefixOf` f
316− , ".xml.rels" `isSuffixOf` f
317− , f /= "word/_rels/document.xml.rels"
318− , f /= "word/_rels/footnotes.xml.rels" ]
319− miscRelEntries <- mapM (entryFromArchive refArchive) miscRels
325+ let miscRelEntries = [ e | e <- zEntries refArchive
326+ , "word/_rels/" `isPrefixOf` (eRelativePath e)
327+ , ".xml.rels" `isSuffixOf` (eRelativePath e)
328+ , eRelativePath e /= "word/_rels/document.xml.rels"
329+ , eRelativePath e /= "word/_rels/footnotes.xml.rels" ]
330+ let otherMediaEntries = [ e | e <- zEntries refArchive
331+ , "word/media/" `isPrefixOf` eRelativePath e ]
320332
321333 -- Create archive
322334 let archive = foldr addEntryToArchive emptyArchive $
@@ -325,7 +337,7 @@ writeDocx opts doc@(Pandoc meta _) = do
325337 docPropsEntry : docPropsAppEntry : themeEntry :
326338 fontTableEntry : settingsEntry : webSettingsEntry :
327339 imageEntries ++ headerFooterEntries ++
328− miscRelEntries
340+ miscRelEntries ++ otherMediaEntries
329341 return $ fromArchive archive
330342
331343styleToOpenXml :: Style -> [Element]