Hello, community.
Starting from the following XML formatted string:
Input:
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<html>\n <head>\n <meta charset=\"utf-8\"/>\n </head>\n <body>\n <ul id=\"a8_boYDC\">\n <li id=\"rp\">\n <p>\"Alpha\"</p>\n <ul>\n <li id=\"cT\">\n <p>\"Beta\"</p>\n <ul>\n <li id=\"wy\">\n <p>\"Gamma\"</p>\n </li>\n <li id=\"Be\">\n <p>\"Delta\"</p>\n </li>\n <li id=\"Ep\">\n <p>\"Epsilon\"</p>\n </li>\n </ul>\n </li>\n <li id=\"Ko\">\n <p>\"Zeta\"</p>\n <ul>\n <li id=\"AI\">\n <p>\"Eta\"</p>\n </li>\n </ul>\n </li>\n <li id=\"kw\">\n <p>\"Theta\"</p>\n <ul>\n <li id=\"sx\">\n <p>\"Iota\"</p>\n </li>\n <li id=\"82\">\n <p>\"Kappa\"</p>\n </li>\n <li id=\"o_\">\n <p>\"Lambda\"</p>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </body>\n</html>\n"
Output:
A PDF file.
I am using the functions
makePDF :: (PandocMonad m, MonadIO m, MonadMask m) => String -> [String] -> (WriterOptions -> Pandoc -> m Text) -> WriterOptions -> Pandoc -> m (Either ByteString ByteString)
from Text.Pandoc.PDF
, and
readHtml :: (PandocMonad m, ToSources a) => ReaderOptions -> a -> m Pandoc
from Text.Pandoc.Readers
.
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as LB
import Data.List
import qualified Data.Text as T
import Data.Text.Encoding
import qualified Data.Text.IO as TIO
import Data.Tree
import Text.Pandoc
import Text.Pandoc.PDF
import Text.Pandoc.Shared
import qualified Data.ByteString.Lazy as BL
import Control.Monad
import Control.Monad.IO.Class
import Control.Monad.Catch
xmlString :: T.Text
xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<html>\n <head>\n <meta charset=\"utf-8\"/>\n </head>\n <body>\n <ul id=\"a8_boYDC\">\n <li id=\"rp\">\n <p>\"Alpha\"</p>\n <ul>\n <li id=\"cT\">\n <p>\"Beta\"</p>\n <ul>\n <li id=\"wy\">\n <p>\"Gamma\"</p>\n </li>\n <li id=\"Be\">\n <p>\"Delta\"</p>\n </li>\n <li id=\"Ep\">\n <p>\"Epsilon\"</p>\n </li>\n </ul>\n </li>\n <li id=\"Ko\">\n <p>\"Zeta\"</p>\n <ul>\n <li id=\"AI\">\n <p>\"Eta\"</p>\n </li>\n </ul>\n </li>\n <li id=\"kw\">\n <p>\"Theta\"</p>\n <ul>\n <li id=\"sx\">\n <p>\"Iota\"</p>\n </li>\n <li id=\"82\">\n <p>\"Kappa\"</p>\n </li>\n <li id=\"o_\">\n <p>\"Lambda\"</p>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </body>\n</html>\n"
export :: (PandocMonad m, MonadIO m, MonadMask m) => Pandoc -> m (Either BL.ByteString BL.ByteString)
export = makePDF "pdflatex" [] writeMarkdown def
f :: T.Text -> PandocIO Pandoc
f = liftIO . (handleError <=< runIO) . g
main :: IO ()
main = do
mybytes <- runIO $ do
doc <- g xmlString
export doc
lr <- handleError mybytes
case lr of (Right b) -> BL.writeFile "output.pdf" b
(Left x) -> BL.putStr x
The issue is:
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.Type H <return> for immediate help.
…
l.1 -
Does anyone know how can I solve this issue ?
System specs:
Macbook Air M1
macOS Ventura 13.1
Installed pdflatex
as the pdf engine.