Public Member Functions | Protected Member Functions

PoDoFo::PdfDocument Class Reference

#include <PdfDocument.h>

Inheritance diagram for PoDoFo::PdfDocument:
PoDoFo::PdfMemDocument PoDoFo::PdfStreamedDocument

List of all members.

Public Member Functions

virtual ~PdfDocument ()
virtual EPdfWriteMode GetWriteMode () const =0
virtual EPdfVersion GetPdfVersion () const =0
virtual bool IsLinearized () const =0
PdfInfoGetInfo () const
PdfOutlinesGetOutlines (bool bCreate=ePdfCreateObject)
PdfNamesTree * GetNamesTree (bool bCreate=ePdfCreateObject)
PdfAcroForm * GetAcroForm (bool bCreate=ePdfCreateObject, PdfAcroForm::EPdfAcroFormDefaulAppearance eDefaultAppearance=PdfAcroForm::ePdfAcroFormDefaultAppearance_BlackText12pt)
PdfPagesTreeGetPagesTree () const
int GetPageCount () const
PdfPageGetPage (int nIndex) const
PdfFontCreateFont (const char *pszFontName, const PdfEncoding *const pEncoding=PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), PdfFontCache::EFontCreationFlags eFontCreationFlags=PdfFontCache::eFontCreationFlags_AutoSelectBase14, bool bEmbedd=true)
PdfFontCreateFont (const char *pszFontName, bool bBold, bool bItalic, const PdfEncoding *const pEncoding=PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), PdfFontCache::EFontCreationFlags eFontCreationFlags=PdfFontCache::eFontCreationFlags_AutoSelectBase14, bool bEmbedd=true, const char *pszFileName=NULL)
PdfFontCreateFont (FT_Face face, const PdfEncoding *const pEncoding=PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), bool bEmbedd=true)
PdfFontCreateDuplicateFontType1 (PdfFont *pFont, const char *pszSuffix)
PdfFontCreateFontSubset (const char *pszFontName, bool bBold, bool bItalic, const PdfEncoding *const pEncoding=PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), const char *pszFileName=NULL)
FT_Library GetFontLibrary () const
void EmbedSubsetFonts ()
PdfPageCreatePage (const PdfRect &rSize)
const PdfDocumentAppend (const PdfMemDocument &rDoc, bool bAppendAll=true)
PdfRect FillXObjectFromDocumentPage (PdfXObject *pXObj, const PdfMemDocument &rDoc, int nPage, bool bUseTrimBox)
void AttachFile (const PdfFileSpec &rFileSpec)
void AddNamedDestination (const PdfDestination &rDest, const PdfString &rsName)
void SetPageMode (EPdfPageMode inMode)
EPdfPageMode GetPageMode (void) const
void SetUseFullScreen (void)
void SetPageLayout (EPdfPageLayout inLayout)
void SetHideToolbar (void)
void SetHideMenubar (void)
void SetHideWindowUI (void)
void SetFitWindow (void)
void SetCenterWindow (void)
void SetDisplayDocTitle (void)
void SetPrintScaling (PdfName &inScalingType)
void SetBaseURI (const std::string &inBaseURI)
void SetLanguage (const std::string &inLanguage)
void SetBindingDirection (PdfName &inDirection)
virtual bool IsPrintAllowed () const =0
virtual bool IsEditAllowed () const =0
virtual bool IsCopyAllowed () const =0
virtual bool IsEditNotesAllowed () const =0
virtual bool IsFillAndSignAllowed () const =0
virtual bool IsAccessibilityAllowed () const =0
virtual bool IsDocAssemblyAllowed () const =0
virtual bool IsHighPrintAllowed () const =0
PdfVecObjectsGetObjects ()
const PdfVecObjectsGetObjects () const

Protected Member Functions

 PdfDocument ()
void SetInfo (PdfInfo *pInfo)
PdfObjectGetCatalog ()
const PdfObjectGetCatalog () const
void SetCatalog (PdfObject *pObject)
PdfObjectGetTrailer ()
const PdfObjectGetTrailer () const
void SetTrailer (PdfObject *pObject)
PdfObjectGetNamedObjectFromCatalog (const char *pszName) const
void InitPagesTree ()
void FixObjectReferences (PdfObject *pObject, int difference)
void SetViewerPreference (const PdfName &whichPref, const PdfObject &valueObj)
void SetViewerPreference (const PdfName &whichPref, bool inValue)
void Clear ()

Detailed Description

PdfDocument is the core interface for working with PDF documents.

PdfDocument provides easy access to the individual pages in the PDF file and to certain special dictionaries.

PdfDocument cannot be used directly. Use PdfMemDocument whenever you want to change the object structure of a PDF file.

When you are only creating PDF files, please use PdfStreamedDocument which is usually faster for creating PDFs.

See also:
PdfStreamedDocument
PdfMemDocument

Constructor & Destructor Documentation

PoDoFo::PdfDocument::~PdfDocument (  )  [virtual]

Close down/destruct the PdfDocument

PoDoFo::PdfDocument::PdfDocument (  )  [protected]

Construct a new (empty) PdfDocument


Member Function Documentation

void PoDoFo::PdfDocument::AddNamedDestination ( const PdfDestination rDest,
const PdfString rsName 
)

Adds a PdfDestination into the global Names tree with the specified name, optionally replacing one of the same name

Parameters:
rDest the destination to be assigned
rsName the name for the destination
const PdfDocument & PoDoFo::PdfDocument::Append ( const PdfMemDocument rDoc,
bool  bAppendAll = true 
)

Appends another PdfDocument to this document

Parameters:
rDoc the document to append
bAppendAll specifies whether pages and outlines are appended too
Returns:
this document
void PoDoFo::PdfDocument::AttachFile ( const PdfFileSpec rFileSpec  ) 

Attach a file to the document.

Parameters:
rFileSpec a file specification
void PoDoFo::PdfDocument::Clear (  )  [protected]

Clear all internal variables And reset PdfDocument to an intial state

PdfFont * PoDoFo::PdfDocument::CreateDuplicateFontType1 ( PdfFont pFont,
const char *  pszSuffix 
)

Creates a duplicate Type1-PdfFont with a new Id

Parameters:
pFont is the existing font
pszSuffix Suffix to add to font-id The returned object is owned by the PdfDocument.

TODO: DS: Make this generic so that it will work for any font type!

PdfFont * PoDoFo::PdfDocument::CreateFont ( FT_Face  face,
const PdfEncoding *const   pEncoding = PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
bool  bEmbedd = true 
)

Creates a PdfFont object

Parameters:
face a valid freetype font handle (will be free'd by PoDoFo)
pEncoding the encoding of the font. The font will not take ownership of this object.
bEmbedd specifies whether this font should be embedded in the PDF file. Embedding fonts is usually a good idea.
Returns:
PdfFont* a pointer to a new PdfFont object. The returned object is owned by the PdfDocument.
PdfFont * PoDoFo::PdfDocument::CreateFont ( const char *  pszFontName,
const PdfEncoding *const   pEncoding = PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
PdfFontCache::EFontCreationFlags  eFontCreationFlags = PdfFontCache::eFontCreationFlags_AutoSelectBase14,
bool  bEmbedd = true 
)

Creates a PdfFont object

Parameters:
pszFontName name of the font as it is known to the system
pEncoding the encoding of the font. The font will not take ownership of this object.
eFontCreationFlags special flag to specify how fonts should be created
bEmbedd specifies whether this font should be embedded in the PDF file. Embedding fonts is usually a good idea.
Returns:
PdfFont* a pointer to a new PdfFont object. The returned object is owned by the PdfDocument.
PdfFont * PoDoFo::PdfDocument::CreateFont ( const char *  pszFontName,
bool  bBold,
bool  bItalic,
const PdfEncoding *const   pEncoding = PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
PdfFontCache::EFontCreationFlags  eFontCreationFlags = PdfFontCache::eFontCreationFlags_AutoSelectBase14,
bool  bEmbedd = true,
const char *  pszFileName = NULL 
)

Creates a PdfFont object

Parameters:
pszFontName name of the font as it is known to the system
bBold if true search for a bold font
bItalic if true search for an italic font
pEncoding the encoding of the font. The font will not take ownership of this object.
eFontCreationFlags special flag to specify how fonts should be created
bEmbedd specifies whether this font should be embedded in the PDF file. Embedding fonts is usually a good idea.
pszFileName path to a valid font file
Returns:
PdfFont* a pointer to a new PdfFont object.
PdfFont * PoDoFo::PdfDocument::CreateFontSubset ( const char *  pszFontName,
bool  bBold,
bool  bItalic,
const PdfEncoding *const   pEncoding = PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
const char *  pszFileName = NULL 
)

Creates a font subset which contains only a few characters and is embedded.

THIS WORKS ONLY FOR TTF FONTS!

Parameters:
pszFontName name of the font as it is known to the system
bBold if true search for a bold font
bItalic if true search for an italic font
pEncoding the encoding of the font. The font will not take ownership of this object.
pszFileName optional path of a fontfile which should be used
Returns:
PdfFont* a pointer to a new PdfFont object.
PdfPage * PoDoFo::PdfDocument::CreatePage ( const PdfRect rSize  ) 

Creates a new page object and inserts it into the internal page tree. The returned page is owned by the PdfDocument and will get deleted along with it!

Parameters:
rSize a PdfRect spezifying the size of the page (i.e the /MediaBox key) in 1/1000th mm
Returns:
a pointer to a PdfPage object
void PoDoFo::PdfDocument::EmbedSubsetFonts (  ) 

Embeds all pending subset-fonts, is automatically done on Write(). Just call explicit in case PdfDocument is needed as XObject

PdfRect PoDoFo::PdfDocument::FillXObjectFromDocumentPage ( PdfXObject pXObj,
const PdfMemDocument rDoc,
int  nPage,
bool  bUseTrimBox 
)

Fill an existing empty XObject from a page of another document

Parameters:
pXObj pointer to the XOject
rDoc the document to embedd into XObject
nPage page-number to embedd into XObject
bUseTrimBox if true try to use trimbox for size of xobject
Returns:
the bounding box
void PoDoFo::PdfDocument::FixObjectReferences ( PdfObject pObject,
int  difference 
) [protected]

Recursively changes every PdfReference in the PdfObject and in any child that is either an PdfArray or a direct object. The reference is changed so that difference is added to the object number if the reference.

Parameters:
pObject object to change
difference add this value to every reference that is encountered
PdfAcroForm * PoDoFo::PdfDocument::GetAcroForm ( bool  bCreate = ePdfCreateObject,
PdfAcroForm::EPdfAcroFormDefaulAppearance  eDefaultAppearance = PdfAcroForm::ePdfAcroFormDefaultAppearance_BlackText12pt 
)

Get access to the AcroForm dictionary

Parameters:
bCreate create the object if it does not exist (ePdfCreateObject) or return NULL if it does not exist
eDefaultAppearance specifies if a default appearence shall be created
Returns:
PdfObject the AcroForm dictionary
PdfObject * PoDoFo::PdfDocument::GetCatalog (  )  [inline, protected]

Get access to the internal Catalog dictionary or root object.

Returns:
PdfObject the documents catalog

Reimplemented in PoDoFo::PdfMemDocument.

const PdfObject * PoDoFo::PdfDocument::GetCatalog (  )  const [inline, protected]

Get access to the internal Catalog dictionary or root object.

Returns:
PdfObject the documents catalog

Reimplemented in PoDoFo::PdfMemDocument.

FT_Library PoDoFo::PdfDocument::GetFontLibrary (  )  const [inline]

Returns the font library from font cache

Returns:
the internal handle to the freetype library
PdfInfo* PoDoFo::PdfDocument::GetInfo (  )  const [inline]

Get access to the internal Info dictionary You can set the author, title etc. of the document using the info dictionary.

Returns:
the info dictionary
PdfObject * PoDoFo::PdfDocument::GetNamedObjectFromCatalog ( const char *  pszName  )  const [protected]

Get a dictioary from the catalog dictionary by its name.

Parameters:
pszName will be converted into a PdfName
Returns:
the dictionary if it was found or NULL
PdfNamesTree * PoDoFo::PdfDocument::GetNamesTree ( bool  bCreate = ePdfCreateObject  ) 

Get access to the Names dictionary (where all the named objects are stored) The returned PdfNamesTree object is owned by the PdfDocument.

Parameters:
bCreate create the object if it does not exist (ePdfCreateObject) or return NULL if it does not exist
Returns:
the Names dictionary
PdfVecObjects * PoDoFo::PdfDocument::GetObjects (  )  [inline]

Get access to the internal vector of objects or root object.

Returns:
the vector of objects

Reimplemented in PoDoFo::PdfMemDocument.

const PdfVecObjects * PoDoFo::PdfDocument::GetObjects (  )  const [inline]

Get access to the internal vector of objects or root object.

Returns:
the vector of objects

Reimplemented in PoDoFo::PdfMemDocument.

PdfOutlines * PoDoFo::PdfDocument::GetOutlines ( bool  bCreate = ePdfCreateObject  ) 

Get access to the Outlines (Bookmarks) dictionary The returned outlines object is owned by the PdfDocument.

Parameters:
bCreate create the object if it does not exist (ePdfCreateObject) or return NULL if it does not exist
Returns:
the Outlines/Bookmarks dictionary
PdfPage * PoDoFo::PdfDocument::GetPage ( int  nIndex  )  const

Get the PdfPage for a specific page in a document The returned page is owned by the PdfDocument and will get deleted along with it!

Parameters:
nIndex which page (0-based)
Returns:
a pointer to a PdfPage for the requested page. The returned object is owned by the PdfDocument.
int PoDoFo::PdfDocument::GetPageCount (  )  const

Get the total number of pages in a document

Returns:
int number of pages
EPdfPageMode PoDoFo::PdfDocument::GetPageMode ( void   )  const

Gets the opening mode for a document

Returns:
which mode is set
PdfPagesTree * PoDoFo::PdfDocument::GetPagesTree (  )  const [inline]

Get access to the pages tree. Better use GetPage and CreatePage methods.

Returns:
the PdfPagesTree of this document.
virtual EPdfVersion PoDoFo::PdfDocument::GetPdfVersion (  )  const [pure virtual]

Get the PDF version of the document

Returns:
EPdfVersion version of the pdf document

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

PdfObject * PoDoFo::PdfDocument::GetTrailer (  )  [inline, protected]

Get access to the internal trailer dictionary or root object.

Returns:
PdfObject the documents catalog
const PdfObject * PoDoFo::PdfDocument::GetTrailer (  )  const [inline, protected]

Get access to the internal trailer dictionary or root object.

Returns:
PdfObject the documents catalog

Reimplemented in PoDoFo::PdfMemDocument.

virtual EPdfWriteMode PoDoFo::PdfDocument::GetWriteMode (  )  const [pure virtual]

Get the write mode used for wirting the PDF

Returns:
the write mode

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

void PoDoFo::PdfDocument::InitPagesTree (  )  [protected]

Internal method for initializing the pages tree for this document

virtual bool PoDoFo::PdfDocument::IsAccessibilityAllowed (  )  const [pure virtual]

Checks if it is allowed to extract text and graphics to support users with disabillities Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to extract text and graphics to support users with disabillities
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsCopyAllowed (  )  const [pure virtual]

Checks if text and graphics extraction is allowed. Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to extract text and graphics from this document
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsDocAssemblyAllowed (  )  const [pure virtual]

Checks if it is allowed to insert, create, rotate, delete pages or add bookmarks Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to insert, create, rotate, delete pages or add bookmarks
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsEditAllowed (  )  const [pure virtual]

Checks if modifiying this document (besides annotations, form fields or changing pages) is allowed. Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to modfiy this document
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsEditNotesAllowed (  )  const [pure virtual]

Checks if it is allowed to add or modify annotations or form fields Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to add or modify annotations or form fields
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsFillAndSignAllowed (  )  const [pure virtual]

Checks if it is allowed to fill in existing form or signature fields Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to fill in existing form or signature fields
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsHighPrintAllowed (  )  const [pure virtual]

Checks if it is allowed to print a high quality version of this document Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to print a high quality version of this document
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsLinearized (  )  const [pure virtual]

Returns wether this PDF document is linearized, aka weboptimized

Returns:
true if the PDF document is linearized

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

virtual bool PoDoFo::PdfDocument::IsPrintAllowed (  )  const [pure virtual]

Checks if printing this document is allowed. Every PDF consuming applications has to adhere this value!

Returns:
true if you are allowed to print this document
See also:
PdfEncrypt to set own document permissions.

Implemented in PoDoFo::PdfMemDocument, and PoDoFo::PdfStreamedDocument.

void PoDoFo::PdfDocument::SetBaseURI ( const std::string &  inBaseURI  ) 

Set the document's Viewer Preferences: Set the base URI of the document

TODO: DS document value!

void PoDoFo::PdfDocument::SetBindingDirection ( PdfName inDirection  ) 

Set the document's Viewer Preferences:

void PoDoFo::PdfDocument::SetCatalog ( PdfObject pObject  )  [inline, protected]

Set the catalog of this PdfDocument deleting the old one.

Parameters:
pObject the new catalog object It will be owned by PdfDocument.
void PoDoFo::PdfDocument::SetCenterWindow ( void   ) 

Set the document's Viewer Preferences: Center the document in the viewers window

void PoDoFo::PdfDocument::SetDisplayDocTitle ( void   ) 

Set the document's Viewer Preferences: Display the title from the document information in the title of the viewer.

See also:
SetTitle
void PoDoFo::PdfDocument::SetFitWindow ( void   ) 

Set the document's Viewer Preferences: Fit the document in the viewers window

void PoDoFo::PdfDocument::SetHideMenubar ( void   ) 

Set the document's Viewer Preferences: Hide the menubar in the viewer

void PoDoFo::PdfDocument::SetHideToolbar ( void   ) 

Set the document's Viewer Preferences: Hide the toolbar in the viewer

void PoDoFo::PdfDocument::SetHideWindowUI ( void   ) 

Set the document's Viewer Preferences: Show only the documents contents and no controll elements such as buttons and scrollbars in the viewer

void PoDoFo::PdfDocument::SetInfo ( PdfInfo pInfo  )  [protected]

Set the info object containing meta information. Deletes any old info object.

Parameters:
pInfo the new info object (will be owned by PdfDocument)
void PoDoFo::PdfDocument::SetLanguage ( const std::string &  inLanguage  ) 

Set the document's Viewer Preferences: Set the language of the document

void PoDoFo::PdfDocument::SetPageLayout ( EPdfPageLayout  inLayout  ) 

Sets the page layout for a document

void PoDoFo::PdfDocument::SetPageMode ( EPdfPageMode  inMode  ) 

Sets the opening mode for a document

Parameters:
inMode which mode to set
void PoDoFo::PdfDocument::SetPrintScaling ( PdfName inScalingType  ) 

Set the document's Viewer Preferences: Set the default print scaling of the document

TODO: DS use an enum here!

void PoDoFo::PdfDocument::SetTrailer ( PdfObject pObject  )  [protected]

Set the trailer of this PdfDocument deleting the old one.

Parameters:
pObject the new trailer object It will be owned by PdfDocument.
void PoDoFo::PdfDocument::SetUseFullScreen ( void   ) 

Sets the opening mode for a document to be in full screen

void PoDoFo::PdfDocument::SetViewerPreference ( const PdfName whichPref,
bool  inValue 
) [protected]

Low level APIs for setting a viewer preference Convinience overload.

Parameters:
whichPref the dictionary key to set
inValue the object to be set
void PoDoFo::PdfDocument::SetViewerPreference ( const PdfName whichPref,
const PdfObject valueObj 
) [protected]

Low level APIs for setting a viewer preference

Parameters:
whichPref the dictionary key to set
valueObj the object to be set