PoDoFo  1.0.0-dev
Public Types | Public Member Functions | Protected Member Functions | Friends | List of all members
PoDoFo::PdfDictionary Class Referencefinal

The PDF dictionary data type of PoDoFo (inherits from PdfDataContainer, the base class for such representations) Note: manipulation function accepts PdfName for the key, while getters accept std::string_view. More...

#include <PdfDictionary.h>

Inheritance diagram for PoDoFo::PdfDictionary:
PoDoFo::PdfDataContainer PoDoFo::PdfDataProvider< PdfDataContainer >

Public Types

using iterator = PdfNameMap< PdfObject >::iterator
 
using const_iterator = PdfNameMap< PdfObject >::const_iterator
 

Public Member Functions

 PdfDictionary ()
 Create a new, empty dictionary.
 
 PdfDictionary (const PdfDictionary &rhs)
 Deep copy a dictionary. More...
 
 PdfDictionary (PdfDictionary &&rhs) noexcept
 
PdfDictionaryoperator= (const PdfDictionary &rhs)
 Assignment operator. More...
 
PdfDictionaryoperator= (PdfDictionary &&rhs) noexcept
 
bool operator== (const PdfDictionary &rhs) const
 Comparison operator. More...
 
bool operator!= (const PdfDictionary &rhs) const
 
void Clear ()
 Removes all keys from the dictionary.
 
PdfObjectAddKey (const PdfName &key, const PdfObject &obj)
 Add a key to the dictionary. More...
 
PdfObjectAddKey (const PdfName &key, PdfObject &&obj)
 
void AddKeyIndirect (const PdfName &key, const PdfObject &obj)
 Add a key to the dictionary. More...
 
PdfObjectAddKeyIndirectSafe (const PdfName &key, const PdfObject &obj)
 Add a key to the dictionary. More...
 
const PdfObjectGetKey (const std::string_view &key) const
 Get the key's value out of the dictionary. More...
 
PdfObjectGetKey (const std::string_view &key)
 Get the key's value out of the dictionary. More...
 
const PdfObjectFindKey (const std::string_view &key) const
 Get the keys value out of the dictionary. More...
 
PdfObjectFindKey (const std::string_view &key)
 
const PdfObjectMustFindKey (const std::string_view &key) const
 
PdfObjectMustFindKey (const std::string_view &key)
 
const PdfObjectFindKeyParent (const std::string_view &key) const
 Get the keys value out of the dictionary. More...
 
PdfObjectFindKeyParent (const std::string_view &key)
 
const PdfObjectMustFindKeyParent (const std::string_view &key) const
 
PdfObjectMustFindKeyParent (const std::string_view &key)
 
const PdfObjectMustGetKey (const std::string_view &key) const
 Get the key's value out of the dictionary. More...
 
PdfObjectMustGetKey (const std::string_view &key)
 
template<typename T >
GetKeyAs (const std::string_view &key, const std::common_type_t< T > &defvalue={ }) const
 
template<typename T >
FindKeyAs (const std::string_view &key, const std::common_type_t< T > &defvalue={ }) const
 
template<typename T >
FindKeyParentAs (const std::string_view &key, const std::common_type_t< T > &defvalue={ }) const
 
template<typename T >
FindKeyAsSafe (const std::string_view &key, const std::common_type_t< T > &defvalue={ }) const
 
template<typename T >
FindKeyParentAsSafe (const std::string_view &key, const std::common_type_t< T > &defvalue={ }) const
 
template<typename T >
bool TryFindKeyAs (const std::string_view &key, T &value) const
 
template<typename T >
bool TryFindKeyParentAs (const std::string_view &key, T &value) const
 
bool HasKey (const std::string_view &key) const
 Allows to check if a dictionary contains a certain key. More...
 
bool RemoveKey (const std::string_view &key)
 Remove a key from this dictionary. More...
 
void Write (OutputStream &stream, PdfWriteFlags writeMode, const PdfStatefulEncrypt *encrypt, charbuff &buffer) const override
 Write the complete datatype to a file. More...
 
unsigned GetSize () const
 
PdfDictionaryIndirectIterable GetIndirectIterator ()
 
PdfDictionaryConstIndirectIterable GetIndirectIterator () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
- Public Member Functions inherited from PoDoFo::PdfDataContainer
const PdfObjectGetOwner () const
 
PdfObjectGetOwner ()
 
- Public Member Functions inherited from PoDoFo::PdfDataProvider< PdfDataContainer >
std::string ToString (PdfWriteFlags flags=PdfWriteFlags::None) const
 Converts the current object into a string representation which can be written directly to a PDF file on disc. More...
 
void ToString (std::string &str, PdfWriteFlags flags=PdfWriteFlags::None) const
 

Protected Member Functions

void resetDirty () override
 
void setChildrenParent () override
 
- Protected Member Functions inherited from PoDoFo::PdfDataContainer
PdfObjectGetIndirectObject (const PdfReference &reference) const
 
PdfDocumentGetObjectDocument ()
 
void SetDirty ()
 
bool IsIndirectReferenceAllowed (const PdfObject &obj)
 
void AssertMutable () const
 

Friends

class PdfObject
 
class PdfTokenizer
 
class PdfSignature
 
class PdfObjectStream
 
class PdfObjectOutputStream
 

Detailed Description

The PDF dictionary data type of PoDoFo (inherits from PdfDataContainer, the base class for such representations) Note: manipulation function accepts PdfName for the key, while getters accept std::string_view.

This is an optimization since we do lookup with both types. We also assume doing lookups with strings will only use characters compatible with PdfDocEncoding

Constructor & Destructor Documentation

◆ PdfDictionary()

PdfDictionary::PdfDictionary ( const PdfDictionary rhs)

Deep copy a dictionary.

Parameters
rhsthe PdfDictionary to copy

Member Function Documentation

◆ AddKey()

PdfObject & PdfDictionary::AddKey ( const PdfName key,
const PdfObject obj 
)

Add a key to the dictionary.

If an existing key of this name exists, its value is replaced and the old value object will be deleted. The given object is copied.

This will set the dirty flag of this object.

See also
IsDirty
Parameters
keythe key is identified by this name in the dictionary
objobject containing the data. The object is copied.

◆ AddKeyIndirect()

void PdfDictionary::AddKeyIndirect ( const PdfName key,
const PdfObject obj 
)

Add a key to the dictionary.

If an existing key of this name exists, its value is replaced and the old value object will be deleted. The object must be indirect and the object reference will be added instead to the dictionary

This will set the dirty flag of this object.

See also
IsDirty
Parameters
keythe key is identified by this name in the dictionary
objobject containing the data
Exceptions
PdfError::InvalidHandleon nullptr obj or if the object can't be added as an indirect reference

◆ AddKeyIndirectSafe()

PdfObject & PdfDictionary::AddKeyIndirectSafe ( const PdfName key,
const PdfObject obj 
)

Add a key to the dictionary.

If an existing key of this name exists, its value is replaced and the old value object will be deleted. If the object is indirect the object reference will be added instead to the dictionary, otherwise the object is copied

This will set the dirty flag of this object.

See also
IsDirty
Parameters
keythe key is identified by this name in the dictionary
obja variant object containing the data
Exceptions
PdfError::InvalidHandleon nullptr obj

◆ FindKey()

const PdfObject* PoDoFo::PdfDictionary::FindKey ( const std::string_view &  key) const

Get the keys value out of the dictionary.

Lookup in the indirect objects as well, if the shallow object was a reference. The returned value is a pointer to the internal object in the dictionary so it MUST not be deleted.

Parameters
keylook for the key names key in the dictionary
Returns
pointer to the found value or 0 if the key was not found.

◆ FindKeyParent()

const PdfObject* PoDoFo::PdfDictionary::FindKeyParent ( const std::string_view &  key) const

Get the keys value out of the dictionary.

Lookup in the indirect objects as well, if the shallow object was a reference. Also lookup the parent objects, if /Parent key is found in the dictionary. The returned value is a pointer to the internal object in the dictionary so it MUST not be deleted.

Parameters
keylook for the key names key in the dictionary
Returns
pointer to the found value or 0 if the key was not found.

◆ GetKey() [1/2]

PdfObject* PoDoFo::PdfDictionary::GetKey ( const std::string_view &  key)

Get the key's value out of the dictionary.

This is an overloaded member function.

The returned value is a pointer to the internal object in the dictionary. It may be modified but is still owned by the dictionary so it MUST not be deleted.

Parameters
keylook for the key named key in the dictionary
Returns
the found value, or 0 if the key was not found.

◆ GetKey() [2/2]

const PdfObject* PoDoFo::PdfDictionary::GetKey ( const std::string_view &  key) const

Get the key's value out of the dictionary.

The returned value is a pointer to the internal object in the dictionary so it MUST not be deleted.

Parameters
keylook for the key named key in the dictionary
Returns
pointer to the found value, or 0 if the key was not found.

◆ GetSize()

unsigned PdfDictionary::GetSize ( ) const
Returns
the size of the internal map

◆ HasKey()

bool PdfDictionary::HasKey ( const std::string_view &  key) const

Allows to check if a dictionary contains a certain key.

Parameters
keylook for the key named key.Name() in the dictionary
Returns
true if the key is part of the dictionary, otherwise false.

◆ MustGetKey()

const PdfObject& PoDoFo::PdfDictionary::MustGetKey ( const std::string_view &  key) const

Get the key's value out of the dictionary.

The returned value is a reference to the internal object in the dictionary so it MUST not be deleted. If the key is not found, this throws a PdfError exception with error code PdfErrorCode::NoObject, instead of returning. This is intended to make code more readable by sparing (especially multiple) nullptr checks.

Parameters
keylook for the key named key in the dictionary
Returns
reference to the found value (never 0).
Exceptions
PdfError(PdfErrorCode::NoObject).

◆ operator!=()

bool PdfDictionary::operator!= ( const PdfDictionary rhs) const
See also
operator==

◆ operator=()

PdfDictionary & PdfDictionary::operator= ( const PdfDictionary rhs)

Assignment operator.

Assign another PdfDictionary to this dictionary. This is a deep copy; all elements of the source dictionary are duplicated.

Parameters
rhsthe PdfDictionary to copy.
Returns
this PdfDictionary

This will set the dirty flag of this object.

See also
IsDirty

◆ operator==()

bool PdfDictionary::operator== ( const PdfDictionary rhs) const

Comparison operator.

If this dictionary contains all the same keys as the other dictionary, and for each key the values compare equal, the dictionaries are considered equal.

◆ RemoveKey()

bool PdfDictionary::RemoveKey ( const std::string_view &  key)

Remove a key from this dictionary.

If the key does not exist, this function does nothing.

Parameters
keythe name of the key to delete
Returns
true if the key was found in the object and was removed. If there was no key with this name, false is returned.

This will set the dirty flag of this object.

See also
IsDirty

◆ Write()

void PdfDictionary::Write ( OutputStream stream,
PdfWriteFlags  writeMode,
const PdfStatefulEncrypt *  encrypt,
charbuff buffer 
) const
overridevirtual

Write the complete datatype to a file.

Parameters
devicewrite the object to this device
writeModeadditional options for writing this object
encryptan encryption object which is used to encrypt this object or nullptr to not encrypt this object

Implements PoDoFo::PdfDataContainer.


The documentation for this class was generated from the following files: