PoDoFo 0.9.6
|
#include <PdfObject.h>
Public Member Functions | |
PdfObject () | |
PdfObject (const PdfReference &rRef, const char *pszType) | |
PdfObject (const PdfReference &rRef, const PdfVariant &rVariant) | |
PdfObject (const PdfVariant &var) | |
PdfObject (bool b) | |
PdfObject (pdf_int64 l) | |
PdfObject (double d) | |
PdfObject (const PdfString &rsString) | |
PdfObject (const PdfName &rName) | |
PdfObject (const PdfReference &rRef) | |
PdfObject (const PdfArray &tList) | |
PdfObject (const PdfDictionary &rDict) | |
PdfObject (const PdfObject &rhs) | |
PdfObject * | GetIndirectKey (const PdfName &key) const |
PdfObject * | MustGetIndirectKey (const PdfName &key) const |
void | WriteObject (PdfOutputDevice *pDevice, EPdfWriteMode eWriteMode, PdfEncrypt *pEncrypt, const PdfName &keyStop=PdfName::KeyNull) const |
pdf_long | GetObjectLength (EPdfWriteMode eWriteMode) |
const PdfReference & | Reference () const |
PdfStream * | GetStream () |
const PdfStream * | GetStream () const |
bool | HasStream () const |
PODOFO_NOTHROW bool | operator< (const PdfObject &rhs) const |
PODOFO_NOTHROW bool | operator== (const PdfObject &rhs) const |
PdfVecObjects * | GetOwner () const |
const PdfObject & | operator= (const PdfObject &rhs) |
void | FlateCompressStream () |
pdf_long | GetByteOffset (const char *pszKey, EPdfWriteMode eWriteMode) |
void | DelayedStreamLoad () const |
![]() | |
PdfVariant () | |
PdfVariant (bool b) | |
PdfVariant (pdf_int64 l) | |
PdfVariant (double d) | |
PdfVariant (const PdfString &rsString) | |
PdfVariant (const PdfName &rName) | |
PdfVariant (const PdfReference &rRef) | |
PdfVariant (const PdfArray &tList) | |
PdfVariant (const PdfDictionary &rDict) | |
PdfVariant (const PdfData &rData) | |
PdfVariant (const PdfVariant &rhs) | |
bool | IsEmpty () const |
void | Clear () |
EPdfDataType | GetDataType () const |
const char * | GetDataTypeString () const |
bool | IsBool () const |
bool | IsNumber () const |
bool | IsReal () const |
bool | IsString () const |
bool | IsHexString () const |
bool | IsName () const |
bool | IsArray () const |
bool | IsDictionary () const |
bool | IsRawData () const |
bool | IsNull () const |
bool | IsReference () const |
void | Write (PdfOutputDevice *pDevice, EPdfWriteMode eWriteMode, const PdfEncrypt *pEncrypt=NULL) const |
virtual void | Write (PdfOutputDevice *pDevice, EPdfWriteMode eWriteMode, const PdfEncrypt *pEncrypt, const PdfName &keyStop) const |
void | ToString (std::string &rsData, EPdfWriteMode eWriteMode=ePdfWriteMode_Clean) const |
void | SetBool (bool b) |
bool | GetBool () const |
void | SetNumber (long l) |
pdf_int64 | GetNumber () const |
void | SetReal (double d) |
double | GetReal () const |
void | SetString (const PdfString &str) |
const PdfString & | GetString () const |
const PdfName & | GetName () const |
const PdfArray & | GetArray () const |
PdfArray & | GetArray () |
const PdfDictionary & | GetDictionary () const |
PdfDictionary & | GetDictionary () |
const PdfReference & | GetReference () const |
const PdfData & | GetRawData () const |
PdfData & | GetRawData () |
const PdfVariant & | operator= (const PdfVariant &rhs) |
bool | operator== (const PdfVariant &rhs) const |
bool | operator!= (const PdfVariant &rhs) const |
bool | IsDirty () const |
void | SetImmutable (bool bImmutable) |
bool | GetImmutable () const |
Protected Member Functions | |
void | EnableDelayedStreamLoading () |
virtual void | DelayedStreamLoadImpl () |
PdfStream * | GetStream_NoDL () |
virtual void | AfterDelayedLoad (EPdfDataType eDataType) |
void | SetVariantOwner (EPdfDataType eDataType) |
![]() | |
void | AssertMutable () const |
void | SetDirty (bool bDirty) |
void | DelayedLoad () const |
void | EnableDelayedLoading () |
virtual void | DelayedLoadImpl () |
virtual void | AfterDelayedLoad (EPdfDataType eDataType) |
PODOFO_NOTHROW bool | DelayedLoadDone () const |
const PdfDictionary & | GetDictionary_NoDL () const |
PdfDictionary & | GetDictionary_NoDL () |
const PdfArray & | GetArray_NoDL () const |
PdfArray & | GetArray_NoDL () |
This class represents a PDF indirect Object in memory
It is possible to manipulate the stream which can be appended to the object (if the object is of underlying type dictionary). A PdfObject is uniquely identified by an object number and a generation number which has to be passed to the constructor.
The object can be written to a file easily using the WriteObject() function.
PoDoFo::PdfObject::PdfObject | ( | ) |
Create a PDF object with object and generation number -1 and the value of being an empty PdfDictionary.
PoDoFo::PdfObject::PdfObject | ( | const PdfReference & | rRef, |
const char * | pszType | ||
) |
Construct a new PDF object of type PdfDictionary.
rRef | reference of this object |
pszType | if this parameter is not null a key "/Type" will be added to the dictionary with the parameter's value. |
PoDoFo::PdfObject::PdfObject | ( | const PdfReference & | rRef, |
const PdfVariant & | rVariant | ||
) |
Construct a new PDF object.
rRef | reference of this object |
rVariant | the value of the PdfObject (which is copied) |
PoDoFo::PdfObject::PdfObject | ( | const PdfVariant & | var | ) |
Create a PDF object with object and generation number -1 and the value of the passed variant.
var | the value of the object |
PoDoFo::PdfObject::PdfObject | ( | bool | b | ) |
PoDoFo::PdfObject::PdfObject | ( | pdf_int64 | l | ) |
PoDoFo::PdfObject::PdfObject | ( | double | d | ) |
PoDoFo::PdfObject::PdfObject | ( | const PdfString & | rsString | ) |
PoDoFo::PdfObject::PdfObject | ( | const PdfName & | rName | ) |
PoDoFo::PdfObject::PdfObject | ( | const PdfReference & | rRef | ) |
Construct a PdfObject with object and generation number -1 and a PdfReference as value.
rRef | the value of the this PdfObject |
PoDoFo::PdfObject::PdfObject | ( | const PdfArray & | tList | ) |
PoDoFo::PdfObject::PdfObject | ( | const PdfDictionary & | rDict | ) |
Construct a PdfObject with object and generation number -1 and a PdfDictionary as value.
rDict | the value of the this PdfObject |
PoDoFo::PdfObject::PdfObject | ( | const PdfObject & | rhs | ) |
|
protectedvirtual |
Called after delayed load
eDataType | Detected data type |
Reimplemented from PoDoFo::PdfVariant.
|
inline |
Dynamically load this object and any associated stream from a PDF file by calling the virtual method DelayedStreamLoadImpl if the stream is not already loaded. Will call DelayedLoad() first if it is required.
Call graph:
DelayedStreamLoad —> DelayedLoad() --> DelayedLoadImpl() | --> DelayedStreamLoadImpl()
For objects created in memory completely, this function does nothing.
|
inlineprotectedvirtual |
Load the stream of the object if it has one and if delayed loading is enabled.
You should override this to control deferred stream loading in your subclass.
Never call this method directly; use DelayedStreamLoad() instead.
Reimplemented in PoDoFo::PdfParserObject.
|
inlineprotected |
Flag any stream associated with the object as incompletely loaded, so that DelayedStreamLoad() will be called when needed.
All constructors initialize a PdfObject with delayed loading of streams disabled. If you want delayed loading of streams you must ask for it. If you do so, call this method early in your ctor and be sure to override DelayedStreamLoadImpl().
Note that it is quite possible to have a PdfObject that requires a delayed-load of its stream but does an immediate load of the PdfVariant base. If you want to delay loading of that too, make sure to call EnableDelayedLoading().
void PoDoFo::PdfObject::FlateCompressStream | ( | ) |
This function compresses any currently set stream using the FlateDecode algorithm. JPEG compressed streams will not be compressed again using this function. Entries to the filter dictionary will be added if necessary.
pdf_long PoDoFo::PdfObject::GetByteOffset | ( | const char * | pszKey, |
EPdfWriteMode | eWriteMode | ||
) |
Calculate the byte offset of the key pszKey from the start of the object if the object was written to disk at the moment of calling this function.
This function is very calculation intensive!
pszKey | key to calculate the byte offset of |
eWriteMode | additional options for writing the PDF |
Get the key's value out of the dictionary. If the key is a reference, the reference is resolved and the object pointed to by the reference is returned.
key | look for the key named key in the dictionary |
pdf_long PoDoFo::PdfObject::GetObjectLength | ( | EPdfWriteMode | eWriteMode | ) |
Get the length of the object in bytes if it was written to disk now.
eWriteMode | additional options for writing the object |
|
inline |
Get the owner of this object.
PdfStream * PoDoFo::PdfObject::GetStream | ( | ) |
const PdfStream * PoDoFo::PdfObject::GetStream | ( | ) | const |
Get a handle to a const PDF stream object. If the PDF object does not have a stream, null is returned.
|
protected |
Same as GetStream() but won't trigger a delayed load, so it's safe for use while a delayed load is in progress.
This will set the dirty flag of this object.
|
inline |
Check if this object has a PdfStream object appended.
MustGetIndirectKey() wraps GetIndirectKey to throw on null return. This makes it MUCH more readable to look up deep chains of linked keys with the cost that it's not easy to tell at which point a missing key/object was encountered.
PdfError(ePdfError_NoObject) | . |
|
inline |
This operator is required for sorting a list of PdfObject instances. It compares the object number. If object numbers are equal, the generation number is compared.
|
inline |
Comparison operator. Compares two PDF object instances only based on their object and generation number.
|
inline |
Get an indirect reference to this object.
|
protected |
Set the owner of this object variant
void PoDoFo::PdfObject::WriteObject | ( | PdfOutputDevice * | pDevice, |
EPdfWriteMode | eWriteMode, | ||
PdfEncrypt * | pEncrypt, | ||
const PdfName & | keyStop = PdfName::KeyNull |
||
) | const |
Write the complete object to a file.
pDevice | write the object to this device |
pEncrypt | an encryption object which is used to encrypt this object or NULL to not encrypt this object |
eWriteMode | additional options for writing the object |
keyStop | if not KeyNull and a key == keyStop is found writing will stop right before this key! |