diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2017-03-23 21:24:01 +0100 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2017-03-23 21:24:01 +0100 |
| commit | f0abbe7533db3e2c14066bddbb5d52ade1ef0685 (patch) | |
| tree | edfa7ab6febb2c9a3c08d836c484994f78b5baf4 /src/Text/Pandoc/PDF.hs | |
| parent | ffd699385a9ea040e6859b7b882b4190597a7f0c (diff) | |
Allow creation of pdf via groff ms and pdfroff.
pandoc -t ms -o output.pdf input.txt
Diffstat (limited to 'src/Text/Pandoc/PDF.hs')
| -rw-r--r-- | src/Text/Pandoc/PDF.hs | 33 |
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 |
