E66F                 ! "#$%&'()*+,-./012345 6789:;<=> ? @ ABCDE None8Check that the dictionary has the specified "Type" filed'Get dictionary type, name at key "Type"NoneFont dictionaryInformation dictionary Pdf document page -Page tree node, contains pages or other nodes  Page treeDocument catalog PDF documentIt is a trailer under the hood        NoneDecrypt input streamQEncryption handler may specify different encryption keys for strings and streams!Decrypt object with the decryptorThe default user passwordStandard decryptor. RC4FGHIJdocument trailerencryption dictionaryFuser password (32 bytes exactly, see 7.6.3.3 Encryption Key Algorithm)KLM FHGIJKLM None$Interface to the underlying PDF filefind object by it's referencedecoded stream content Note: the N' returned is valid only until the next , or any other operation, that requares seekCurrent decryptor@Get random access input stream for direct access to the PDF file Get all stream filters! Recursively load indirect object ! ! ! !NoneB "Convenient type alias#!Basic implementation of pdf monad$xPerform action without adding objects to cache. Note: the existent cache is not flushed, and is used within the action%Remove all objects from cache&Execute PDF action with O'Execute PDF action with P(Get PDF document)%Whether the PDF document it encrypted**Set the password to be user for decryption(Returns False when the password is wrong+-Decrypt PDF object using user password is set"#QRSTUVWXYZ[\]^_`ab$%&'c()*+d"#$%&'()*+"#&'(%$)*+"#QRSTUVWXYZ[\]^_`ab$%&'c()*+dNone,Get the document catalog-Document encryption dictionary.'Infornation dictionary for the document,-.,-.,-.,-.None/Get root node of page tree////None09Total number of child leaf nodes, including deep children1Parent page node2Referencies to all kids3 Load page tree node by reference4Find page by it's numberNote: it is not efficient for PDF files with a lot of pages, because it performs traversal through the page tree each time. Use 0, 2 and 3 for efficient traversal.01234 01234 0123401234 None5Document title5555None6 Font subtypes<Get font subtype=Load font info for the font 6789:;<=efgh 6789:;<= 6;:987<=6;:987<=efgh None> Rectangle@+Create rectangle form an array of 4 numbers>?@>?@>?@>?@NoneAPage's parent nodeB,List of references to page's content streamsCMedia box, inheritableDFont dictionaries for the pageEExtract text from the pagecIt tries to add spaces between chars if they don't present as actual characters in content stream.i9Convert glyphs to text, trying to add spaces and newlinesIt takes list of spans. Each span is a list of glyphs that are outputed in one shot. So we don't need to add space inside span, only between them.ABCjDEi ABCDE ABCDEABCjDEi Noneklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345  !"#$%&'()*+,-./0123456789:;<=>?@ABCDE6  ! " # $ % & ' ( ) * + , -./0123456789:;<=>?@ ABCDEFGHI J J KLMNOP Q R S T U V W XYZY[\]^/__`abcdefghijklmnopqrstuv\wx\wy\wz\w{\|}\|~\|\|\|\|\|\|      !"#$%&%'%(%)%*%+%,%-%./0/1/2/3/3/4/4/5/5/6/6/7/7/8/8/9/9/:/;/</=/>/?/@/A/B/CDpdf-toolbox-document-0.0.5.0Pdf.Toolbox.Document.Pdf"Pdf.Toolbox.Document.Internal.UtilPdf.Toolbox.Document.FontDict#Pdf.Toolbox.Document.Internal.TypesPdf.Toolbox.Document.PagePdf.Toolbox.Document.PageNodePdf.Toolbox.Document.CatalogPdf.Toolbox.Document.DocumentPdf.Toolbox.Document.EncryptionPdf.Toolbox.Document.MonadPdf.Toolbox.Document.InfoPdf.Toolbox.Document.TypesPdf.Toolbox.Documenttransformers-0.4.2.0Control.Monad.IO.ClassliftIOMonadIOpdf-toolbox-core-0.0.3.2Pdf.Toolbox.Core.Stream knownFilters ensureTypedictionaryTypeFontDictInfoPagePageNodePageTree PageTreeLeaf PageTreeNodeCatalogDocument DecryptorDecryptorScope DecryptStream DecryptString decryptObjectdefaultUserPasswordmkStandardDecryptorMonadPdf lookupObject streamContent getDecryptorgetRISgetStreamFiltersderefPdfPdf'withoutObjectCacheflushObjectCacherunPdfrunPdfWithHandledocument isEncryptedsetUserPassworddecryptdocumentCatalogdocumentEncryption documentInfocatalogPageNode pageNodeNKidspageNodeParent pageNodeKids loadPageNodepageNodePageByNum infoTitle FontSubtype FontTrueType FontType3 FontMMType1 FontType1 FontType0fontDictSubtypefontDictLoadInfo RectanglerectangleFromArraypageParentNode pageContents pageMediaBox pageFontDictspageExtractText AlgorithmAESV2V2 decryptStr decryptDictmkKey verifyKey mkDecryptorPdf.Toolbox.Core.IO.RISISRISbaseGHC.IO.Handle.TypesHandlePdfStatestRIS stFilters stLastXRefstAddToObjectCache stObjectCachestXRefStreamCache stDecryptorreadObjectForEntry getXRefStreamlookupEntryReclookupXRefEntrytakeStreamContent getLastXRef getFromCacheaddObjectToCacherunPdf'$fMonadPdfPdf'loadFontInfoCompositeloadFontInfoSimpleloadEncodingDifferencesloadUnicodeCMap glyphsToTextmediaBox Data.EitherpartitionEithersrightsleftseither Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybeeither-4.3.3.2Control.Monad.Trans.Either hoistEither mapEitherT bimapEitherTrightlefteitherT runEitherTEitherTControl.Monad.Trans.MaybeMaybeT runMaybeT mapMaybeT liftCallCC liftCatch liftListenliftPass safe-0.3.8SafetailMaytailDeftailSafeinitMayinitDefinitSafeheadMaylastMayheadDeflastDef minimumMay maximumMay minimumDef maximumDef foldr1May foldl1May' foldr1Def foldl1Def' fromJustDefatMayatDefreadMayreadDef lookupJustDef findJustDef errors-1.4.7Control.Error.SaferightZjustZassertZreadZatZfoldl1Z'foldl1Zfoldr1ZmaximumZminimumZlastZheadZinitZtailZtryRighttryJust tryAsserttryReadtryAt tryFoldl1' tryFoldl1 tryFoldr1 tryMaximum tryMinimumtryLasttryHeadtryInittryTailjustErr assertErrreadErratErr foldl1Err' foldl1Err foldr1Err maximumErr minimumErrlastErrheadErrinitErrtailErrrightMay assertMayControl.Error.ScriptscriptIO runScriptScriptControl.Error.UtilsyncIOtryIOerrLnerrfmapRTisRightTisLeftTfmapRisRightisLeft isNothingTisJustTnothingjustmaybeTbool failWithMfailWith?:!??? hoistMaybenoteTnotehushThushrunAllEAllErunAnyEAnyE Data.EitherRflipETfmapLThandleTcatchTthrowTsucceedTflipEfmapLhandleEcatchEthrowEsucceed runEitherREitherR runEitherRTEitherRTPdf.Toolbox.Core.Object.Util mapObjecttoStreamtoArraytoReftoStrtoDicttoName toBooleantoNumber realValueintValuesetValueForKeydeleteValueForKey lookupDict' lookupDict fromObject FromObjectPdf.Toolbox.Core.ErrortryPdfIOannotatingError annotateError ParseErrorIOErrorAnnotatedErrorUnexpectedErrorPdfErrorPdfEPdf.Toolbox.Core.Object.TypesNumIntNumRealNumberBooleanNameDictArrayStrStreamRefONumberOBooleanONameODictOArrayOStrOStreamORefONullObject