git.iko.soy/typeable/pandoc
on master help sign in
Docx writer: Create overrides per-image for media/ in ref docx.

This should be somewhat more robust and cover more types of images.

commitcbfde5cb50a461995a8b60d148615b5a72159f3d authorJohn MacFarlane <jgm@berkeley.edu> dateMon 2 Jun 2014, 20:39 (12 years ago) parent326d7fa
1 file changed+8−13
src/Text/Pandoc/Writers/Docx.hs+8−13
src/Text/Pandoc/Writers/Docx.hs+8−13
@@ -170,6 +170,9 @@ writeDocx opts doc@(Pandoc meta _) = do
170170 let mkImageOverride (_, imgpath, mbMimeType, _, _) =
171171 mkOverrideNode ("/word/" ++ imgpath,
172172 fromMaybe "application/octet-stream" mbMimeType)
173+ let mkMediaOverride imgpath = mkOverrideNode ('/':imgpath,
174+ fromMaybe "application/octet-stream"
175+ $ getMimeType imgpath)
173176 let overrides = map mkOverrideNode (
174177 [("/word/webSettings.xml",
175178 "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml")
@@ -196,22 +199,14 @@ writeDocx opts doc@(Pandoc meta _) = do
196199 "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml")) headers ++
197200 map (\x -> (maybe "" ("/word/" ++) $ extractTarget x,
198201 "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml")) footers) ++
199− 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− ]
202+ map mkImageOverride imgs ++
203+ map mkMediaOverride [ eRelativePath e | e <- zEntries refArchive
204+ , "word/media/" `isPrefixOf` eRelativePath e ]
205+
211206 let defaultnodes = [mknode "Default"
212207 [("Extension","xml"),("ContentType","application/xml")] (),
213208 mknode "Default"
214− [("Extension","rels"),("ContentType","application/vnd.openxmlformats-package.relationships+xml")] ()] ++ imageDefaults
209+ [("Extension","rels"),("ContentType","application/vnd.openxmlformats-package.relationships+xml")] ()]
215210 let contentTypesDoc = mknode "Types" [("xmlns","http://schemas.openxmlformats.org/package/2006/content-types")] $ defaultnodes ++ overrides
216211 let contentTypesEntry = toEntry "[Content_Types].xml" epochtime
217212 $ renderXml contentTypesDoc