{-# LANGUAGE BlockArguments #-}
module Pdftotext
(
Document,
Layout (..),
Page,
openByteString,
openFile,
page,
pages,
pagesTotal,
pdftotext,
pageNumber,
pageOutOf,
pageText,
)
where
import Data.ByteString
import Data.Text (Text)
import GHC.IO (unsafePerformIO)
import Pdftotext.Internal
openByteString :: ByteString -> Maybe Document
openByteString :: ByteString -> Maybe Document
openByteString = IO (Maybe Document) -> Maybe Document
forall a. IO a -> a
unsafePerformIO (IO (Maybe Document) -> Maybe Document)
-> (ByteString -> IO (Maybe Document))
-> ByteString
-> Maybe Document
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> IO (Maybe Document)
openByteStringIO
page :: Int -> Document -> Maybe Page
page :: Int -> Document -> Maybe Page
page no :: Int
no doc :: Document
doc = IO (Maybe Page) -> Maybe Page
forall a. IO a -> a
unsafePerformIO (IO (Maybe Page) -> Maybe Page) -> IO (Maybe Page) -> Maybe Page
forall a b. (a -> b) -> a -> b
$ Int -> Document -> IO (Maybe Page)
pageIO Int
no Document
doc
pages :: Document -> [Page]
pages :: Document -> [Page]
pages = IO [Page] -> [Page]
forall a. IO a -> a
unsafePerformIO (IO [Page] -> [Page])
-> (Document -> IO [Page]) -> Document -> [Page]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Document -> IO [Page]
pagesIO
pagesTotal :: Document -> Int
pagesTotal :: Document -> Int
pagesTotal = IO Int -> Int
forall a. IO a -> a
unsafePerformIO (IO Int -> Int) -> (Document -> IO Int) -> Document -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Document -> IO Int
pagesTotalIO
pdftotext :: Layout -> Document -> Text
pdftotext :: Layout -> Document -> Text
pdftotext lay :: Layout
lay doc :: Document
doc = IO Text -> Text
forall a. IO a -> a
unsafePerformIO (IO Text -> Text) -> IO Text -> Text
forall a b. (a -> b) -> a -> b
$ Layout -> Document -> IO Text
pdftotextIO Layout
lay Document
doc
pageText :: Layout -> Page -> Text
pageText :: Layout -> Page -> Text
pageText l :: Layout
l p :: Page
p = IO Text -> Text
forall a. IO a -> a
unsafePerformIO (IO Text -> Text) -> IO Text -> Text
forall a b. (a -> b) -> a -> b
$ Layout -> Page -> IO Text
pageTextIO Layout
l Page
p