module Graphics.UI.Gtk.Poppler.Document (
Document,
DocumentClass,
Page,
PageClass,
IndexIter,
FontsIter,
FontsIterClass,
FontInfo,
FontInfoClass,
Dest,
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.Action (Action, Dest, makeNewAction, makeNewDest)
import Graphics.UI.Gtk.Poppler.Types
documentNewFromFile ::
String
-> Maybe String
-> IO (Maybe Document)
documentNewFromFile uri password =
maybeNull (wrapNewGObject 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 (wrapNewGObject 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 =
wrapNewGObject 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 =
wrapNewGObject 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 liftM Just $ makeNewDest (castPtr destPtr)
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 (wrapNewGObject 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 =
wrapNewGObject 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 (wrapNewGObject mkAttachment . return) list
g_list_free glistPtr
return attachs
indexIterNew :: DocumentClass doc => doc -> IO (Maybe IndexIter)
indexIterNew doc = do
iterPtr <- (\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_new argPtr1) (toDocument doc)
if iterPtr == nullPtr
then return Nothing
else liftM Just (makeNewIndexIter (castPtr iterPtr))
newtype IndexIter = IndexIter (ForeignPtr (IndexIter))
makeNewIndexIter :: Ptr IndexIter -> IO IndexIter
makeNewIndexIter rPtr = do
iter <- newForeignPtr rPtr indexIter_free
return (IndexIter iter)
foreign import ccall unsafe "&poppler_index_iter_free"
indexIter_free :: FinalizerPtr IndexIter
indexIterCopy :: IndexIter -> IO IndexIter
indexIterCopy iter =
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_copy argPtr1) iter
>>= makeNewIndexIter
indexIterGetChild :: IndexIter -> IO (Maybe IndexIter)
indexIterGetChild iter = do
iterPtr <- (\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_get_child argPtr1) iter
if iterPtr == nullPtr
then return Nothing
else liftM Just (makeNewIndexIter iterPtr)
indexIterIsOpen :: IndexIter -> IO Bool
indexIterIsOpen iter =
liftM toBool $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_is_open argPtr1) iter
indexIterNext :: IndexIter -> IO Bool
indexIterNext iter =
liftM toBool $
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_next argPtr1) iter
indexIterGetAction :: IndexIter -> IO Action
indexIterGetAction iter =
(\(IndexIter arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_index_iter_get_action argPtr1) iter
>>= makeNewAction . castPtr
fontInfoNew :: DocumentClass doc => doc -> IO FontInfo
fontInfoNew doc =
wrapNewGObject mkFontInfo $
(\(Document arg1) -> withForeignPtr arg1 $ \argPtr1 ->poppler_font_info_new argPtr1) (toDocument doc)
fontsIterCopy :: FontsIterClass iter => iter -> IO FontsIter
fontsIterCopy iter =
wrapNewGObject 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 ()))))
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 ())))
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 ())))
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 :: CULong
foreign import ccall unsafe "poppler_page_mode_get_type"
poppler_page_mode_get_type :: CULong
foreign import ccall unsafe "poppler_permissions_get_type"
poppler_permissions_get_type :: CULong
foreign import ccall unsafe "poppler_viewer_preferences_get_type"
poppler_viewer_preferences_get_type :: CULong