PoDoFo  0.9.4
Classes | Public Member Functions | List of all members
PoDoFo::PdfVecObjects Class Reference

#include <PdfVecObjects.h>

Classes

class  Observer
 
class  StreamFactory
 

Public Member Functions

 PdfVecObjects ()
 
PdfDocumentGetParentDocument () const
 
void SetParentDocument (PdfDocument *pDocument)
 
void SetAutoDelete (bool bAutoDelete)
 
bool AutoDelete () const
 
void Clear ()
 
size_t GetSize () const
 
size_t GetObjectCount () const
 
PdfObjectGetObject (const PdfReference &ref) const
 
size_t GetIndex (const PdfReference &ref) const
 
PdfObjectRemoveObject (const PdfReference &ref, bool bMarkAsFree=true)
 
PdfObjectRemoveObject (const TIVecObjects &it)
 
PdfObjectCreateObject (const char *pszType=NULL)
 
PdfObjectCreateObject (const PdfVariant &rVariant)
 
void AddFreeObject (const PdfReference &rReference)
 
const TPdfReferenceList & GetFreeObjects () const
 
void RenumberObjects (PdfObject *pTrailer, TPdfReferenceSet *pNotDelete=NULL, bool bDoGarbageCollection=false)
 
void push_back (PdfObject *pObj)
 
void insert_sorted (PdfObject *pObj)
 
void Sort ()
 
void Reserve (size_t size)
 
void GetObjectDependencies (const PdfObject *pObj, TPdfReferenceList *pList) const
 
void Attach (Observer *pObserver)
 
void Detach (Observer *pObserver)
 
void SetStreamFactory (StreamFactory *pFactory)
 
PdfStreamCreateStream (PdfObject *pParent)
 
PdfStreamCreateStream (const PdfStream &rhs)
 
void WriteObject (PdfObject *pObject)
 
void Finish ()
 
void BeginAppendStream (const PdfStream *pStream)
 
void EndAppendStream (const PdfStream *pStream)
 
TIVecObjects begin ()
 
TCIVecObjects begin () const
 
TIVecObjects end ()
 
TCIVecObjects end () const
 
PdfObjectGetBack ()
 
void CollectGarbage (PdfObject *pTrailer)
 
std::string GetNextSubsetPrefix ()
 
void SetObjectCount (const PdfReference &rRef)
 

Detailed Description

A STL vector of PdfObjects. I.e. a list of PdfObject classes. The PdfParser will read the PdfFile into memory and create a PdfVecObjects of all dictionaries found in the PDF file.

The PdfWriter class contrary creates a PdfVecObjects internally and writes it to a PDF file later with an appropriate table of contents.

These class contains also advanced funtions for searching of PdfObject's in a PdfVecObject.

Constructor & Destructor Documentation

PoDoFo::PdfVecObjects::PdfVecObjects ( )

Default constuctor

Member Function Documentation

void PoDoFo::PdfVecObjects::AddFreeObject ( const PdfReference rReference)

Mark a reference as unused so that it can be reused for new objects.

Parameters
rReferencethe reference to reuse
void PoDoFo::PdfVecObjects::Attach ( Observer pObserver)
inline

Attach a new observer

Parameters
pObserverto attach
bool PoDoFo::PdfVecObjects::AutoDelete ( ) const
inline
Returns
if autodeletion is enabled and all objects will be deleted when the PdfVecObjects is deleted.
TIVecObjects PoDoFo::PdfVecObjects::begin ( )
inline

Iterator pointing at the begining of the vector

Returns
beginning iterator
TCIVecObjects PoDoFo::PdfVecObjects::begin ( ) const
inline

Iterator pointing at the begining of the vector

Returns
beginning iterator
void PoDoFo::PdfVecObjects::BeginAppendStream ( const PdfStream pStream)

Every stream implementation has to call this in BeginAppend

Parameters
pStreamthe stream object that is calling
void PoDoFo::PdfVecObjects::Clear ( )

Removes all objects from the vector and resets it to the default state.

If SetAutoDelete is true all objects are deleted. All observers are removed from the vector.

See also
SetAutoDelete
AutoDelete
void PoDoFo::PdfVecObjects::CollectGarbage ( PdfObject pTrailer)

Deletes all objects that are not references by other objects besides the trailer (which references the root dictionary, which in turn should reference all other objects).

Parameters
pTrailertrailer object of the PDF

Warning this might be slow!

PdfObject * PoDoFo::PdfVecObjects::CreateObject ( const char *  pszType = NULL)

Creates a new object and inserts it into the vector. This function assigns the next free object number to the PdfObject.

Parameters
pszTypeoptionall value of the /Type key of the object
Returns
PdfObject pointer to the new PdfObject
PdfObject * PoDoFo::PdfVecObjects::CreateObject ( const PdfVariant rVariant)

Creates a new object (of type rVariants) and inserts it into the vector. This function assigns the next free object number to the PdfObject.

Parameters
rVariantvalue of the PdfObject
Returns
PdfObject pointer to the new PdfObject
PdfStream * PoDoFo::PdfVecObjects::CreateStream ( PdfObject pParent)

Creates a stream object This method is a factory for PdfStream objects.

Parameters
pParentparent object
Returns
a new stream object
PdfStream * PoDoFo::PdfVecObjects::CreateStream ( const PdfStream rhs)

Creates a stream object by copying an existing stream

Parameters
rhscopy this stream
Returns
a new stream object
void PoDoFo::PdfVecObjects::Detach ( Observer pObserver)

Detach an observer.

Parameters
pObserverobserver to detach
TIVecObjects PoDoFo::PdfVecObjects::end ( )
inline

Iterator pointing at the end of the vector

Returns
ending iterator
TCIVecObjects PoDoFo::PdfVecObjects::end ( ) const
inline

Iterator pointing at the end of the vector

Returns
ending iterator
void PoDoFo::PdfVecObjects::EndAppendStream ( const PdfStream pStream)

Every stream implementation has to call this in EndAppend

Parameters
pStreamthe stream object that is calling
void PoDoFo::PdfVecObjects::Finish ( )

Call whenever a document is finished

PdfObject * PoDoFo::PdfVecObjects::GetBack ( )
inline

Get the last object in the vector

Returns
the last object in the vector or NULL if the vector is emtpy.
const TPdfReferenceList & PoDoFo::PdfVecObjects::GetFreeObjects ( ) const
inline
Returns
a list of free references in this vector
size_t PoDoFo::PdfVecObjects::GetIndex ( const PdfReference ref) const

Finds the object with the given reference in m_vecOffsets and returns the index to it.

Parameters
refthe object to be found
Returns
the found object or NULL if no object was found.
std::string PoDoFo::PdfVecObjects::GetNextSubsetPrefix ( )

Get next unique subset-prefix

Returns
a string to use as subset-prefix.
PdfObject * PoDoFo::PdfVecObjects::GetObject ( const PdfReference ref) const

Finds the object with the given reference in m_vecOffsets and returns a pointer to it if it is found.

Parameters
refthe object to be found
Returns
the found object or NULL if no object was found.
size_t PoDoFo::PdfVecObjects::GetObjectCount ( ) const
inline
Returns
the highest object number in the vector
void PoDoFo::PdfVecObjects::GetObjectDependencies ( const PdfObject pObj,
TPdfReferenceList *  pList 
) const

Get a set with all references of objects that the passed object depends on.

Parameters
pObjthe object to calculate all dependencies for
pListwrite the list of dependencies to this list
PdfDocument * PoDoFo::PdfVecObjects::GetParentDocument ( ) const
inline
Returns
a pointer to a PdfDocument that is the parent of this vector. Might be NULL if the vector has no parent.
size_t PoDoFo::PdfVecObjects::GetSize ( ) const
inline
Returns
the size of the internal vector
void PoDoFo::PdfVecObjects::insert_sorted ( PdfObject pObj)

Insert an object into this vector so that the vector remains sorted w.r.t. the ordering based on object and generation numbers m_bObjectCount will be increased for the object.

Parameters
pObjpointer to the object you want to insert
void PoDoFo::PdfVecObjects::push_back ( PdfObject pObj)
See also
insert_sorted

Simple forward to insert sorted, as PdfVecObjects is always sorted.

PdfObject * PoDoFo::PdfVecObjects::RemoveObject ( const PdfReference ref,
bool  bMarkAsFree = true 
)

Remove the object with the given object and generation number from the list of objects. The object is returned if it was found. Otherwise NULL is returned. The caller has to delete the object by hisself.

Parameters
refthe object to be found
bMarkAsFreeif true the removed object reference is marked as free object you will always want to have this true as invalid PDF files can be generated otherwise
Returns
The removed object.
PdfObject * PoDoFo::PdfVecObjects::RemoveObject ( const TIVecObjects &  it)

Remove the object with the iterator it from the vector and return it

Parameters
itthe object to remove
Returns
the removed object
void PoDoFo::PdfVecObjects::RenumberObjects ( PdfObject pTrailer,
TPdfReferenceSet *  pNotDelete = NULL,
bool  bDoGarbageCollection = false 
)

Renumbers all objects according to there current position in the vector. All references remain intact. Warning! This function is very calculation intensive.

Parameters
pTrailerthe trailer object
pNotDeletea list of object which must not be deleted
bDoGarbageCollectionenable garbage collection, which deletes all objects that are not reachable from the trailer. This might be slow!
See also
CollectGarbage
void PoDoFo::PdfVecObjects::Reserve ( size_t  size)
inline

Causes the internal vector to reserve space for size elements.

Parameters
sizereserve space for that much elements in the internal vector
void PoDoFo::PdfVecObjects::SetAutoDelete ( bool  bAutoDelete)
inline

Enable/disable auto deletion. By default auto deletion is disabled.

Parameters
bAutoDeleteif true all objects will be deleted when the PdfVecObjects is deleted.
void PoDoFo::PdfVecObjects::SetObjectCount ( const PdfReference rRef)
inline

Set the object count so that the object described this reference is contained in the object count.

Parameters
rRefreference of newly added object
void PoDoFo::PdfVecObjects::SetParentDocument ( PdfDocument pDocument)
inline

Sets a parent document of this vector

Parameters
pDocumentthe parent of this vector
void PoDoFo::PdfVecObjects::SetStreamFactory ( StreamFactory pFactory)
inline

Sets a StreamFactory which is used whenever CreateStream is called.

Parameters
pFactorya stream factory or NULL to reset to the default factory
void PoDoFo::PdfVecObjects::Sort ( )

Sort the objects in the vector based on their object and generation numbers

void PoDoFo::PdfVecObjects::WriteObject ( PdfObject pObject)

Can be called to force objects to be written to disk.

Parameters
pObjecta PdfObject that should be written to disk.