git.iko.soy/typeable/pandoc
on master help sign in
Pass value of --dpi to rsvg-convert...

when converting SVG to PDF in the process of creating a PDF. Closes #5721.

commita64b3ab61ff34dca25f04f4f97b283dc5159ac87 authorJohn MacFarlane <jgm@berkeley.edu> dateTue 10 Sep 2019, 21:17 (7 years ago) parent4778d03
1 file changed+15−11
src/Text/Pandoc/PDF.hs+15−11
src/Text/Pandoc/PDF.hs+15−11
@@ -108,7 +108,7 @@ makePDF program pdfargs writer opts doc =
108108#endif
109109 runIOorExplode $ do
110110 putCommonState commonState
111− doc' <- handleImages tmpdir doc
111+ doc' <- handleImages opts tmpdir doc
112112 source <- writer opts doc'
113113 res <- case baseProg of
114114 "context" -> context2pdf verbosity program pdfargs tmpdir source
@@ -156,17 +156,18 @@ makeWithWkhtmltopdf program pdfargs writer opts doc@(Pandoc meta _) = do
156156 verbosity <- getVerbosity
157157 liftIO $ html2pdf verbosity program args source
158158
159−handleImages :: FilePath -- ^ temp dir to store images
159+handleImages :: WriterOptions
160+ -> FilePath -- ^ temp dir to store images
160161 -> Pandoc -- ^ document
161162 -> PandocIO Pandoc
162−handleImages tmpdir doc =
163+handleImages opts tmpdir doc =
163164 fillMediaBag doc >>=
164165 extractMedia tmpdir >>=
165− walkM (convertImages tmpdir)
166+ walkM (convertImages opts tmpdir)
166167
167−convertImages :: FilePath -> Inline -> PandocIO Inline
168−convertImages tmpdir (Image attr ils (src, tit)) = do
169− img <- liftIO $ convertImage tmpdir src
168+convertImages :: WriterOptions -> FilePath -> Inline -> PandocIO Inline
169+convertImages opts tmpdir (Image attr ils (src, tit)) = do
170+ img <- liftIO $ convertImage opts tmpdir src
170171 newPath <-
171172 case img of
172173 Left e -> do
@@ -174,11 +175,13 @@ convertImages tmpdir (Image attr ils (src, tit)) = do
174175 return src
175176 Right fp -> return fp
176177 return (Image attr ils (newPath, tit))
177−convertImages _ x = return x
178+convertImages _ _ x = return x
178179
179180-- Convert formats which do not work well in pdf to png
180−convertImage :: FilePath -> FilePath -> IO (Either String FilePath)
181−convertImage tmpdir fname =
181+convertImage :: WriterOptions -> FilePath -> FilePath
182+ -> IO (Either String FilePath)
183+convertImage opts tmpdir fname = do
184+ let dpi = show $ writerDpi opts
182185 case mime of
183186 Just "image/png" -> doNothing
184187 Just "image/jpeg" -> doNothing
@@ -187,7 +190,8 @@ convertImage tmpdir fname =
187190 Just "application/eps" -> doNothing
188191 Just "image/svg+xml" -> E.catch (do
189192 (exit, _) <- pipeProcess Nothing "rsvg-convert"
190− ["-f","pdf","-a","-o",pdfOut,fname] BL.empty
193+ ["-f","pdf","-a","--dpi-x",dpi,"--dpi-y",dpi,
194+ "-o",pdfOut,fname] BL.empty
191195 if exit == ExitSuccess
192196 then return $ Right pdfOut
193197 else return $ Left "conversion from SVG failed")