@@ -108,7 +108,7 @@ makePDF program pdfargs writer opts doc =
109 runIOorExplode $ do
109 runIOorExplode $ do
110 putCommonState commonState
110 putCommonState commonState
111− doc' <- handleImages tmpdir doc
111+ doc' <- handleImages opts tmpdir doc
112 source <- writer opts doc'
112 source <- writer opts doc'
113 res <- case baseProg of
113 res <- case baseProg of
114 "context" -> context2pdf verbosity program pdfargs tmpdir source
114 "context" -> context2pdf verbosity program pdfargs tmpdir source
@@ -156,17 +156,18 @@ makeWithWkhtmltopdf program pdfargs writer opts doc@(Pandoc meta _) = do
156 verbosity <- getVerbosity
156 verbosity <- getVerbosity
157 liftIO $ html2pdf verbosity program args source
157 liftIO $ html2pdf verbosity program args source
159+handleImages :: WriterOptions
159−handleImages :: FilePath -- ^ temp dir to store images
160+ -> FilePath -- ^ temp dir to store images
160 -> Pandoc -- ^ document
161 -> Pandoc -- ^ document
161 -> PandocIO Pandoc
162 -> PandocIO Pandoc
162−handleImages tmpdir doc =
163+handleImages opts tmpdir doc =
163 fillMediaBag doc >>=
164 fillMediaBag doc >>=
164 extractMedia tmpdir >>=
165 extractMedia tmpdir >>=
165− walkM (convertImages tmpdir)
166+ walkM (convertImages opts tmpdir)
167−convertImages :: FilePath -> Inline -> PandocIO Inline
168+convertImages :: WriterOptions -> FilePath -> Inline -> PandocIO Inline
168−convertImages tmpdir (Image attr ils (src, tit)) = do
169+convertImages opts tmpdir (Image attr ils (src, tit)) = do
169− img <- liftIO $ convertImage tmpdir src
170+ img <- liftIO $ convertImage opts tmpdir src
170 newPath <-
171 newPath <-
171 case img of
172 case img of
172 Left e -> do
173 Left e -> do
@@ -174,11 +175,13 @@ convertImages tmpdir (Image attr ils (src, tit)) = do
174 return src
175 return src
175 Right fp -> return fp
176 Right fp -> return fp
176 return (Image attr ils (newPath, tit))
177 return (Image attr ils (newPath, tit))
177−convertImages _ x = return x
178+convertImages _ _ x = return x
179-- Convert formats which do not work well in pdf to png
180-- Convert formats which do not work well in pdf to png
181+convertImage :: WriterOptions -> FilePath -> FilePath
180−convertImage :: FilePath -> FilePath -> IO (Either String FilePath)
182+ -> IO (Either String FilePath)
181−convertImage tmpdir fname =
183+convertImage opts tmpdir fname = do
184+ let dpi = show $ writerDpi opts
182 case mime of
185 case mime of
183 Just "image/png" -> doNothing
186 Just "image/png" -> doNothing
184 Just "image/jpeg" -> doNothing
187 Just "image/jpeg" -> doNothing
@@ -187,7 +190,8 @@ convertImage tmpdir fname =
187 Just "application/eps" -> doNothing
190 Just "application/eps" -> doNothing
188 Just "image/svg+xml" -> E.catch (do
191 Just "image/svg+xml" -> E.catch (do
189 (exit, _) <- pipeProcess Nothing "rsvg-convert"
192 (exit, _) <- pipeProcess Nothing "rsvg-convert"
193+ ["-f","pdf","-a","--dpi-x",dpi,"--dpi-y",dpi,
190− ["-f","pdf","-a","-o",pdfOut,fname] BL.empty
194+ "-o",pdfOut,fname] BL.empty
191 if exit == ExitSuccess
195 if exit == ExitSuccess
192 then return $ Right pdfOut
196 then return $ Right pdfOut
193 else return $ Left "conversion from SVG failed")
197 else return $ Left "conversion from SVG failed")