blob: a002b38dbc002572c0ebfecf26f0cc489a3f7f42 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
{-# LANGUAGE OverloadedStrings #-}
module PDF
( generatePDFAt
) where
import Control.Exception (SomeException, try)
import System.Directory (copyFile, createDirectoryIfMissing)
import System.FilePath (takeDirectory)
import System.IO (hClose)
import System.IO.Temp (withTempFile)
import qualified System.Process as Process (callCommand)
import Text.LaTeX (LaTeX, renderFile)
generatePDFAt :: FilePath -> LaTeX -> IO ()
generatePDFAt path latex = do
(basePath, tmpPath) <- generatePDF latex
createDirectoryIfMissing True (takeDirectory path)
copyFile tmpPath path
Process.callCommand ("rm " ++ basePath ++ "*")
generatePDF :: LaTeX -> IO (FilePath, FilePath)
generatePDF latex =
withTempFile "/tmp" "latex" $ \filePath handle -> do
hClose handle
renderFile filePath latex
renderFile "/home/joris/resume.tex" latex
pdfCommand filePath
pdfCommand filePath
return (filePath, filePath ++ ".pdf")
pdfCommand :: String -> IO ()
pdfCommand path = do
let command = "cd resume && pdflatex --output-directory /tmp " ++ path ++ " >/dev/null"
result <- try $ Process.callCommand command :: IO (Either SomeException ())
case result of
Left err -> do
putStrLn "Error generating PDF:"
putStrLn (show err)
Right _ ->
return ()
|