summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/PDF.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/PDF.hs')
-rw-r--r--src/Text/Pandoc/PDF.hs33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/Text/Pandoc/PDF.hs b/src/Text/Pandoc/PDF.hs
index 43110abf1..f1274686d 100644
--- a/src/Text/Pandoc/PDF.hs
+++ b/src/Text/Pandoc/PDF.hs
@@ -74,7 +74,7 @@ changePathSeparators = intercalate "/" . splitDirectories
makePDF :: MonadIO m
=> String -- ^ pdf creator (pdflatex, lualatex,
- -- xelatex, context, wkhtmltopdf)
+ -- xelatex, context, wkhtmltopdf, pdfroff)
-> (WriterOptions -> Pandoc -> PandocIO String) -- ^ writer
-> WriterOptions -- ^ options
-> Verbosity -- ^ verbosity level
@@ -106,6 +106,12 @@ makePDF "wkhtmltopdf" writer opts verbosity _ doc@(Pandoc meta _) = liftIO $ do
setVerbosity verbosity
writer opts doc
html2pdf verbosity args source
+makePDF "pdfroff" writer opts verbosity _mediabag doc = liftIO $ do
+ source <- runIOorExplode $ do
+ setVerbosity verbosity
+ writer opts doc
+ let args = ["-ms", "-e", "-k", "-i"]
+ ms2pdf verbosity args source
makePDF program writer opts verbosity mediabag doc = do
let withTemp = if takeBaseName program == "context"
then withTempDirectory "."
@@ -295,6 +301,31 @@ runTeXProgram verbosity program args runNumber numRuns tmpDir source = do
else return Nothing
return (exit, out, pdf)
+ms2pdf :: Verbosity
+ -> [String]
+ -> String
+ -> IO (Either ByteString ByteString)
+ms2pdf verbosity args source = do
+ env' <- getEnvironment
+ when (verbosity >= INFO) $ do
+ putStrLn "[makePDF] Command line:"
+ putStrLn $ "pdfroff " ++ " " ++ unwords (map show args)
+ putStr "\n"
+ putStrLn "[makePDF] Environment:"
+ mapM_ print env'
+ putStr "\n"
+ putStrLn $ "[makePDF] Contents:\n"
+ putStr source
+ putStr "\n"
+ (exit, out) <- pipeProcess (Just env') "pdfroff" args
+ (UTF8.fromStringLazy source)
+ when (verbosity >= INFO) $ do
+ B.hPutStr stdout out
+ putStr "\n"
+ return $ case exit of
+ ExitFailure _ -> Left out
+ ExitSuccess -> Right out
+
html2pdf :: Verbosity -- ^ Verbosity level
-> [String] -- ^ Args to wkhtmltopdf
-> String -- ^ HTML5 source