PoDoFo  0.9.4
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PoDoFo::PdfWriter Class Reference

#include <PdfWriter.h>

Inheritance diagram for PoDoFo::PdfWriter:
PoDoFo::PdfImmediateWriter

Public Member Functions

 PdfWriter (PdfParser *pParser)
 
 PdfWriter (PdfVecObjects *pVecObjects, const PdfObject *pTrailer)
 
void Write (const char *pszFilename)
 
void Write (PdfOutputDevice *pDevice)
 
void SetWriteMode (EPdfWriteMode eWriteMode)
 
EPdfWriteMode GetWriteMode () const
 
void SetPdfVersion (EPdfVersion eVersion)
 
EPdfVersion GetPdfVersion () const
 
void SetLinearized (bool bLinearize)
 
bool GetLinearized () const
 
void SetUseXRefStream (bool bStream)
 
bool GetUseXRefStream () const
 
const char * GetPdfVersionString () const
 
void SetEncrypted (const PdfEncrypt &rEncrypt)
 
bool GetEncrypted () const
 
void GetByteOffset (PdfObject *pObject, pdf_long *pulOffset)
 
void WriteToBuffer (char **ppBuffer, pdf_long *pulLen)
 
void FillTrailerObject (PdfObject *pTrailer, pdf_long lSize, bool bPrevEntry, bool bOnlySizeKey) const
 

Protected Member Functions

 PdfWriter (PdfVecObjects *pVecObjects)
 
void PODOFO_LOCAL WritePdfHeader (PdfOutputDevice *pDevice)
 
void WritePdfObjects (PdfOutputDevice *pDevice, const PdfVecObjects &vecObjects, PdfXRef *pXref) PODOFO_LOCAL
 
void CreateFileIdentifier (PdfString &identifier, const PdfObject *pTrailer) const PODOFO_LOCAL
 
void PODOFO_LOCAL WriteLinearized (PdfOutputDevice *pDevice)
 
PdfObjectCreateLinearizationDictionary () PODOFO_LOCAL
 

Protected Attributes

PdfVecObjectsm_vecObjects
 
PdfEncryptm_pEncrypt
 If not NULL encrypt all strings and streams and create an encryption dictionary in the trailer.
 
PdfObjectm_pEncryptObj
 Used to temporarly store the encryption dictionary.
 

Detailed Description

The PdfWriter class writes a list of PdfObjects as PDF file. The XRef section (which is the required table of contents for any PDF file) is created automatically.

It does not know about pages but only about PdfObjects.

Most users will want to use PdfDocument.

Constructor & Destructor Documentation

PoDoFo::PdfWriter::PdfWriter ( PdfParser pParser)

Create a PdfWriter object from a PdfParser object

Parameters
pParsera pdf parser object
PoDoFo::PdfWriter::PdfWriter ( PdfVecObjects pVecObjects,
const PdfObject pTrailer 
)

Create a new pdf file, from an vector of PdfObjects and a trailer object.

Parameters
pVecObjectsthe vector of objects
pTrailera valid trailer object
PoDoFo::PdfWriter::PdfWriter ( PdfVecObjects pVecObjects)
protected

Create a PdfWriter from a PdfVecObjects

Member Function Documentation

void PoDoFo::PdfWriter::CreateFileIdentifier ( PdfString identifier,
const PdfObject pTrailer 
) const
protected

Creates a file identifier which is required in several PDF workflows. All values from the files document information dictionary are used to create a unique MD5 key which is added to the trailer dictionary.

Parameters
identifierwrite the identifier to this string
pTrailertrailer object
PdfObject* PoDoFo::PdfWriter::CreateLinearizationDictionary ( )
protected

Create a linearization dictionary for the current document and return a pointer to it after inserting it into the vector of PdfObjects

Returns
a pointer to the linearization dictionary
void PoDoFo::PdfWriter::FillTrailerObject ( PdfObject pTrailer,
pdf_long  lSize,
bool  bPrevEntry,
bool  bOnlySizeKey 
) const

Add required keys to a trailer object

Parameters
pTraileradd keys to this object
lSizenumber of objects in the PDF file
bPrevEntryif true a prev entry is added to the trailer object with a value of 0
bOnlySizeKeywrite only the size key
void PoDoFo::PdfWriter::GetByteOffset ( PdfObject pObject,
pdf_long *  pulOffset 
)

Calculate the byte offset of the object pObject in the PDF file if the file was written to disk at the moment of calling this function.

This function is very calculation intensive!

Parameters
pObjectobject to calculate the byte offset (has to be a child of this PdfWriter)
pulOffsetpointer to an unsigned long to save the offset
bool PoDoFo::PdfWriter::GetEncrypted ( ) const
inline
Returns
true if this PdfWriter creates an encrypted PDF file
bool PoDoFo::PdfWriter::GetLinearized ( ) const
inline
Returns
true if this PDF file is web optimized.
EPdfVersion PoDoFo::PdfWriter::GetPdfVersion ( ) const
inline

Get the PDF version of the document

Returns
EPdfVersion version of the pdf document
const char* PoDoFo::PdfWriter::GetPdfVersionString ( ) const
inline

Get the file format version of the pdf

Returns
the file format version as string
bool PoDoFo::PdfWriter::GetUseXRefStream ( ) const
inline
Returns
wether a XRef stream is used or not
EPdfWriteMode PoDoFo::PdfWriter::GetWriteMode ( ) const
inline

Get the write mode used for wirting the PDF

Returns
the write mode
void PoDoFo::PdfWriter::SetEncrypted ( const PdfEncrypt rEncrypt)

Set the written document to be encrypted using a PdfEncrypt object

Parameters
rEncryptan encryption object which is used to encrypt the written PDF file
void PoDoFo::PdfWriter::SetLinearized ( bool  bLinearize)
inline

Enabled linearization for this document. I.e. optimize it for web usage. Default is false.

Parameters
bLinearizeif true create a web optimized PDF file
void PoDoFo::PdfWriter::SetPdfVersion ( EPdfVersion  eVersion)
inline

Set the PDF Version of the document. Has to be called before Write() to have an effect.

Parameters
eVersionversion of the pdf document
void PoDoFo::PdfWriter::SetUseXRefStream ( bool  bStream)
inline

Create a XRef stream which is in some case more compact but requires at least PDF 1.5 Default is false.

Parameters
bStreamif true a XRef stream object will be created
void PoDoFo::PdfWriter::SetWriteMode ( EPdfWriteMode  eWriteMode)
inline

Set the write mode to use when writing the PDF.

Parameters
eWriteModewrite mode
void PoDoFo::PdfWriter::Write ( const char *  pszFilename)

Writes the complete document to a PDF file.

Parameters
pszFilenamefilename of a PDF file.
void PoDoFo::PdfWriter::Write ( PdfOutputDevice pDevice)

Writes the complete document to a PdfOutputDevice

Parameters
pDevicewrite to the specified device
void PoDoFo::PdfWriter::WriteLinearized ( PdfOutputDevice pDevice)
protected

Writes a linearized PDF file

Parameters
pDevicewrite to this output device
void PoDoFo::PdfWriter::WritePdfHeader ( PdfOutputDevice pDevice)
protected

Writes the pdf header to the current file.

Parameters
pDevicewrite to this output device
void PoDoFo::PdfWriter::WritePdfObjects ( PdfOutputDevice pDevice,
const PdfVecObjects vecObjects,
PdfXRef pXref 
)
protected

Write pdf objects to file

Parameters
pDevicewrite to this output device
vecObjectswrite all objects in this vector to the file
pXrefadd all written objects to this XRefTable
void PoDoFo::PdfWriter::WriteToBuffer ( char **  ppBuffer,
pdf_long *  pulLen 
)

Write the whole document to a buffer in memory.

Better use a PdfOutputDevice that writes to a PdfRefCountedBuffer.

Parameters
ppBufferwhere this points the address of the buffer will be written after that being malloc()'d and the document will be written to that buffer.
pulLenthe buffer length will be returned in this parameter
See also
Write

Member Data Documentation

PdfVecObjects* PoDoFo::PdfWriter::m_vecObjects
protected

Reorder and renumber all object as required for linearized PDF files. This function is very slow.

Parameters
pLinearizelinearization dictionary
pHintprimary hint stream dictionary
pPagefirst page to display in the document
ppLastthe pointer will be initialized to the last object belonging to the first pageInitialize m_pPagesTree with its correct value Always call this function befre accessing the pages tree.Find dependencies required for creating a linearized PDF of the catalog dictionary.Fill all keys in the linearization dictionary with their values
pLinearizea linearization dictionary
pHintthe hint stream
pPagethe first page in the linerarized PDF file
pLastpointer of the last object belonging to the first page
pVecXRefOffsetxref table entries for previous entry