module Graphics.UI.Gtk.Poppler.Document (
Document,
DocumentClass,
Page,
PageClass,
IndexIter,
IndexIterClass,
FontsIter,
FontsIterClass,
FontInfo,
FontInfoClass,
Dest,
DestClass,
FormField,
Action,
PSFile,
PSFileClass,
FontType (..),
PageLayout (..),
PageMode (..),
Permissions (..),
ViewerPreferences (..),
documentNewFromFile,
documentNewFromData,
documentSave,
documentGetNPages,
documentGetPage,
documentGetPageByLabel,
documentFindDest,
documentHasAttachments,
documentGetAttachments,
documentGetFormField,
indexIterNew,
indexIterCopy,
indexIterGetChild,
indexIterIsOpen,
indexIterNext,
indexIterGetAction,
fontInfoNew,
fontsIterCopy,
fontsIterGetName,
fontsIterGetFullName,
fontsIterGetFontType,
fontsIterIsEmbedded,
fontsIterIsSubset,
fontsIterNext,
psFileNew,
psFileSetPaperSize,
psFileSetDuplex,
documentAuthor,
documentCreationDate,
documentCreator,
documentFormat,
documentFormatMajor,
documentFormatMinor,
documentKeywords,
documentLinearized,
documentMetadata,
documentModDate,
documentPageLayout,
documentPageMode,
documentPermissions,
documentProducer,
documentSubject,
documentTitle,
documentViewerPreferences,
documentLabel,
) where
import Control.Monad
import Data.Typeable
import System.Glib.Attributes
import System.Glib.Properties
import System.Glib.FFI
import System.Glib.Flags
import System.Glib.GList
import System.Glib.GError
import System.Glib.GObject
import System.Glib.UTFString
import Graphics.UI.Gtk.Poppler.Enums
import Graphics.UI.Gtk.Poppler.Types
documentNewFromFile ::
String
-> Maybe String
-> IO (Maybe Document)
documentNewFromFile uri password =
maybeNull (makeNewGObject mkDocument) $
withUTFString uri $ \ uriPtr ->
maybeWith withUTFString password $ \ passwordPtr ->
propagateGError (poppler_document_new_from_file
uriPtr
passwordPtr)
documentNewFromData ::
String
-> Maybe String
-> IO (Maybe Document)
documentNewFromData dat password =
maybeNull (makeNewGObject mkDocument) $
withUTFString dat $ \ datPtr ->
maybeWith withUTFString password $ \ passwordPtr ->
propagateGError (poppler_document_new_from_data
datPtr
(fromIntegral (length dat))
passwordPtr)
documentSave :: DocumentClass doc => doc
-> String
-> IO Bool
documentSave doc uri =
liftM toBool $
withUTFString uri $ \ uriPtr ->
propagateGError ((\(Document arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_save argPtr1 arg2 arg3)
(toDocument doc)
uriPtr)
documentGetNPages :: DocumentClass doc => doc
-> IO Int
documentGetNPages doc =
liftM fromIntegral $
(\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_get_n_pages argPtr1) (toDocument doc)
documentGetPage :: DocumentClass doc => doc
-> Int
-> IO Page
documentGetPage doc index =
makeNewGObject mkPage $
(\(Document arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_get_page argPtr1 arg2) (toDocument doc) (fromIntegral index)
documentGetPageByLabel :: DocumentClass doc => doc
-> String
-> IO Page
documentGetPageByLabel doc label =
makeNewGObject mkPage $
withUTFString label $ \ labelPtr ->
(\(Document arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_get_page_by_label argPtr1 arg2) (toDocument doc) labelPtr
documentFindDest :: DocumentClass doc => doc
-> String
-> IO (Maybe Dest)
documentFindDest doc linkName =
withUTFString linkName $ \ linkNamePtr -> do
destPtr <- (\(Document arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_find_dest argPtr1 arg2)
(toDocument doc)
linkNamePtr
if destPtr == nullPtr
then return Nothing
else do
dest <- makeNewGObject mkDest $ return destPtr
(\(Dest arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_dest_free argPtr1) dest
return $ Just dest
documentHasAttachments :: DocumentClass doc => doc
-> IO Bool
documentHasAttachments doc =
liftM toBool $
(\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_has_attachments argPtr1) (toDocument doc)
documentGetFormField :: DocumentClass doc => doc
-> Int
-> IO (Maybe FormField)
documentGetFormField doc id =
maybeNull (makeNewGObject mkFormField) $
(\(Document arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_get_form_field argPtr1 arg2)
(toDocument doc)
(fromIntegral id)
psFileNew :: DocumentClass doc => doc
-> String
-> Int
-> Int
-> IO PSFile
psFileNew doc filename firstPage nPages =
makeNewGObject mkPSFile $
withUTFString filename $ \ filenamePtr ->
(\(Document arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->poppler_ps_file_new argPtr1 arg2 arg3 arg4)
(toDocument doc)
filenamePtr
(fromIntegral firstPage)
(fromIntegral nPages)
psFileSetPaperSize :: PSFileClass file =>
file
-> Double
-> Double
-> IO ()
psFileSetPaperSize psFile width height =
(\(PSFile arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->poppler_ps_file_set_paper_size argPtr1 arg2 arg3)
(toPSFile psFile)
(realToFrac width)
(realToFrac height)
psFileSetDuplex :: PSFileClass file =>
file
-> Bool
-> IO ()
psFileSetDuplex psFile duplex =
(\(PSFile arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->poppler_ps_file_set_duplex argPtr1 arg2)
(toPSFile psFile)
(fromBool duplex)
documentGetAttachments :: DocumentClass doc => doc
-> IO [Attachment]
documentGetAttachments doc = do
glistPtr <- (\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_document_get_attachments argPtr1) (toDocument doc)
list <- fromGList glistPtr
attachs <- mapM (makeNewGObject mkAttachment . return) list
g_list_free glistPtr
return attachs
indexIterNew :: DocumentClass doc => doc -> IO (Maybe IndexIter)
indexIterNew doc =
maybeNull (makeNewGObject mkIndexIter) $
(\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_new argPtr1) (toDocument doc)
indexIterCopy :: IndexIterClass iter => iter -> IO IndexIter
indexIterCopy iter =
makeNewGObject mkIndexIter $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_copy argPtr1) (toIndexIter iter)
indexIterGetChild :: IndexIterClass iter => iter -> IO (Maybe IndexIter)
indexIterGetChild iter =
maybeNull (makeNewGObject mkIndexIter) $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_get_child argPtr1) (toIndexIter iter)
indexIterIsOpen :: IndexIterClass iter => iter
-> IO Bool
indexIterIsOpen iter =
liftM toBool $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_is_open argPtr1) (toIndexIter iter)
indexIterNext :: IndexIterClass iter => iter
-> IO Bool
indexIterNext iter =
liftM toBool $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_next argPtr1) (toIndexIter iter)
indexIterGetAction :: IndexIterClass iter => iter -> IO Action
indexIterGetAction iter =
makeNewGObject mkAction $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_get_action argPtr1) (toIndexIter iter)
fontInfoNew :: DocumentClass doc => doc -> IO FontInfo
fontInfoNew doc =
makeNewGObject mkFontInfo $
(\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_font_info_new argPtr1) (toDocument doc)
fontsIterCopy :: FontsIterClass iter => iter -> IO FontsIter
fontsIterCopy iter =
makeNewGObject mkFontsIter $
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_copy argPtr1) (toFontsIter iter)
fontsIterGetName :: FontsIterClass iter => iter -> IO String
fontsIterGetName iter =
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_get_name argPtr1) (toFontsIter iter)
>>= peekUTFString
fontsIterGetFullName :: FontsIterClass iter => iter -> IO String
fontsIterGetFullName iter =
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_get_full_name argPtr1) (toFontsIter iter)
>>= peekUTFString
fontsIterGetFontType :: FontsIterClass iter => iter -> IO FontType
fontsIterGetFontType iter =
liftM (toEnum . fromIntegral) $
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_get_font_type argPtr1) (toFontsIter iter)
fontsIterIsEmbedded :: FontsIterClass iter => iter
-> IO Bool
fontsIterIsEmbedded iter =
liftM toBool $
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_is_embedded argPtr1) (toFontsIter iter)
fontsIterIsSubset :: FontsIterClass iter => iter
-> IO Bool
fontsIterIsSubset iter =
liftM toBool $
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_is_subset argPtr1) (toFontsIter iter)
fontsIterNext :: FontsIterClass iter => iter
-> IO Bool
fontsIterNext iter =
liftM toBool $
(\(FontsIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_fonts_iter_next argPtr1) (toFontsIter iter)
documentAuthor :: DocumentClass doc => ReadAttr doc String
documentAuthor = readAttrFromStringProperty "author"
documentCreationDate :: DocumentClass doc => ReadAttr doc Int
documentCreationDate = readAttrFromIntProperty "creation-date"
documentCreator :: DocumentClass doc => ReadAttr doc String
documentCreator = readAttrFromStringProperty "creator"
documentFormat :: DocumentClass doc => ReadAttr doc String
documentFormat = readAttrFromStringProperty "format"
documentFormatMajor :: DocumentClass doc => ReadAttr doc String
documentFormatMajor = readAttrFromStringProperty "format-major"
documentFormatMinor :: DocumentClass doc => ReadAttr doc String
documentFormatMinor = readAttrFromStringProperty "format-minor"
documentKeywords :: DocumentClass doc => ReadAttr doc String
documentKeywords = readAttrFromStringProperty "keywords"
documentLinearized :: DocumentClass doc => ReadAttr doc String
documentLinearized = readAttrFromStringProperty "linearized"
documentMetadata :: DocumentClass doc => ReadAttr doc String
documentMetadata = readAttrFromStringProperty "metadata"
documentModDate :: DocumentClass doc => ReadAttr doc Int
documentModDate = readAttrFromIntProperty "mod-date"
documentPageLayout :: DocumentClass doc => ReadAttr doc PageLayout
documentPageLayout = readAttrFromEnumProperty "page-layout"
poppler_page_layout_get_type
documentPageMode :: DocumentClass doc => ReadAttr doc PageMode
documentPageMode = readAttrFromEnumProperty "page-mode"
poppler_page_mode_get_type
documentPermissions :: DocumentClass doc => ReadAttr doc Permissions
documentPermissions = readAttrFromEnumProperty "permissions"
poppler_permissions_get_type
documentProducer :: DocumentClass doc => ReadAttr doc String
documentProducer = readAttrFromStringProperty "producer"
documentSubject :: DocumentClass doc => ReadAttr doc String
documentSubject = readAttrFromStringProperty "subject"
documentTitle :: DocumentClass doc => ReadAttr doc String
documentTitle = readAttrFromStringProperty "title"
documentViewerPreferences :: DocumentClass doc => ReadAttr doc ViewerPreferences
documentViewerPreferences = readAttrFromEnumProperty "viewer-preferences"
poppler_viewer_preferences_get_type
documentLabel :: DocumentClass doc => ReadAttr doc String
documentLabel = readAttrFromStringProperty "label"
foreign import ccall safe "poppler_document_new_from_file"
poppler_document_new_from_file :: ((Ptr CChar) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO (Ptr Document)))))
foreign import ccall safe "poppler_document_new_from_data"
poppler_document_new_from_data :: ((Ptr CChar) -> (CInt -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO (Ptr Document))))))
foreign import ccall safe "poppler_document_save"
poppler_document_save :: ((Ptr Document) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO CInt))))
foreign import ccall safe "poppler_document_get_n_pages"
poppler_document_get_n_pages :: ((Ptr Document) -> (IO CInt))
foreign import ccall safe "poppler_document_get_page"
poppler_document_get_page :: ((Ptr Document) -> (CInt -> (IO (Ptr Page))))
foreign import ccall safe "poppler_document_get_page_by_label"
poppler_document_get_page_by_label :: ((Ptr Document) -> ((Ptr CChar) -> (IO (Ptr Page))))
foreign import ccall safe "poppler_document_find_dest"
poppler_document_find_dest :: ((Ptr Document) -> ((Ptr CChar) -> (IO (Ptr Dest))))
foreign import ccall unsafe "poppler_dest_free"
poppler_dest_free :: ((Ptr Dest) -> (IO ()))
foreign import ccall safe "poppler_document_has_attachments"
poppler_document_has_attachments :: ((Ptr Document) -> (IO CInt))
foreign import ccall safe "poppler_document_get_form_field"
poppler_document_get_form_field :: ((Ptr Document) -> (CInt -> (IO (Ptr FormField))))
foreign import ccall safe "poppler_ps_file_new"
poppler_ps_file_new :: ((Ptr Document) -> ((Ptr CChar) -> (CInt -> (CInt -> (IO (Ptr PSFile))))))
foreign import ccall safe "poppler_ps_file_set_paper_size"
poppler_ps_file_set_paper_size :: ((Ptr PSFile) -> (CDouble -> (CDouble -> (IO ()))))
foreign import ccall safe "poppler_ps_file_set_duplex"
poppler_ps_file_set_duplex :: ((Ptr PSFile) -> (CInt -> (IO ())))
foreign import ccall safe "poppler_document_get_attachments"
poppler_document_get_attachments :: ((Ptr Document) -> (IO (Ptr ())))
foreign import ccall unsafe "g_list_free"
g_list_free :: ((Ptr ()) -> (IO ()))
foreign import ccall safe "poppler_index_iter_new"
poppler_index_iter_new :: ((Ptr Document) -> (IO (Ptr IndexIter)))
foreign import ccall safe "poppler_index_iter_copy"
poppler_index_iter_copy :: ((Ptr IndexIter) -> (IO (Ptr IndexIter)))
foreign import ccall safe "poppler_index_iter_get_child"
poppler_index_iter_get_child :: ((Ptr IndexIter) -> (IO (Ptr IndexIter)))
foreign import ccall safe "poppler_index_iter_is_open"
poppler_index_iter_is_open :: ((Ptr IndexIter) -> (IO CInt))
foreign import ccall safe "poppler_index_iter_next"
poppler_index_iter_next :: ((Ptr IndexIter) -> (IO CInt))
foreign import ccall safe "poppler_index_iter_get_action"
poppler_index_iter_get_action :: ((Ptr IndexIter) -> (IO (Ptr Action)))
foreign import ccall safe "poppler_font_info_new"
poppler_font_info_new :: ((Ptr Document) -> (IO (Ptr FontInfo)))
foreign import ccall safe "poppler_fonts_iter_copy"
poppler_fonts_iter_copy :: ((Ptr FontsIter) -> (IO (Ptr FontsIter)))
foreign import ccall safe "poppler_fonts_iter_get_name"
poppler_fonts_iter_get_name :: ((Ptr FontsIter) -> (IO (Ptr CChar)))
foreign import ccall safe "poppler_fonts_iter_get_full_name"
poppler_fonts_iter_get_full_name :: ((Ptr FontsIter) -> (IO (Ptr CChar)))
foreign import ccall safe "poppler_fonts_iter_get_font_type"
poppler_fonts_iter_get_font_type :: ((Ptr FontsIter) -> (IO CInt))
foreign import ccall safe "poppler_fonts_iter_is_embedded"
poppler_fonts_iter_is_embedded :: ((Ptr FontsIter) -> (IO CInt))
foreign import ccall safe "poppler_fonts_iter_is_subset"
poppler_fonts_iter_is_subset :: ((Ptr FontsIter) -> (IO CInt))
foreign import ccall safe "poppler_fonts_iter_next"
poppler_fonts_iter_next :: ((Ptr FontsIter) -> (IO CInt))
foreign import ccall unsafe "poppler_page_layout_get_type"
poppler_page_layout_get_type :: CUInt
foreign import ccall unsafe "poppler_page_mode_get_type"
poppler_page_mode_get_type :: CUInt
foreign import ccall unsafe "poppler_permissions_get_type"
poppler_permissions_get_type :: CUInt
foreign import ccall unsafe "poppler_viewer_preferences_get_type"
poppler_viewer_preferences_get_type :: CUInt