PoDoFo
0.9.6
|
#include <PdfWriter.h>
Public Member Functions | |
PdfWriter (PdfParser *pParser) | |
PdfWriter (PdfVecObjects *pVecObjects, const PdfObject *pTrailer) | |
void | Write (const char *pszFilename) |
void | Write (PdfOutputDevice *pDevice) |
void | WriteUpdate (PdfOutputDevice *pDevice, PdfInputDevice *pSourceInputDevice, bool bRewriteXRefTable) |
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 |
void | SetPrevXRefOffset (pdf_int64 lPrevXRefOffset) |
pdf_int64 | GetPrevXRefOffset () const |
void | SetIncrementalUpdate (bool bIncrementalUpdate) |
bool | GetIncrementalUpdate (void) 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 bOnlySizeKey) const |
Protected Member Functions | |
PdfWriter (PdfVecObjects *pVecObjects) | |
void PODOFO_LOCAL | WritePdfHeader (PdfOutputDevice *pDevice) |
void | WritePdfObjects (PdfOutputDevice *pDevice, const PdfVecObjects &vecObjects, PdfXRef *pXref, bool bRewriteXRefTable=false) PODOFO_LOCAL |
void | CreateFileIdentifier (PdfString &identifier, const PdfObject *pTrailer, PdfString *pOriginalIdentifier=NULL) const PODOFO_LOCAL |
void | Write (PdfOutputDevice *pDevice, bool bRewriteXRefTable) |
void PODOFO_LOCAL | WriteLinearized (PdfOutputDevice *pDevice) |
PdfObject * | CreateLinearizationDictionary () PODOFO_LOCAL |
Protected Attributes | |
PdfVecObjects * | m_vecObjects |
PdfEncrypt * | m_pEncrypt |
If not NULL encrypt all strings and streams and create an encryption dictionary in the trailer. | |
PdfObject * | m_pEncryptObj |
Used to temporarily store the encryption dictionary. | |
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.
PoDoFo::PdfWriter::PdfWriter | ( | PdfParser * | pParser | ) |
PoDoFo::PdfWriter::PdfWriter | ( | PdfVecObjects * | pVecObjects, |
const PdfObject * | pTrailer | ||
) |
Create a new pdf file, from an vector of PdfObjects and a trailer object.
pVecObjects | the vector of objects |
pTrailer | a valid trailer object |
|
protected |
Create a PdfWriter from a PdfVecObjects
|
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.
identifier | write the identifier to this string |
pTrailer | trailer object |
pOriginalIdentifier | write the original identifier (when using incremental update) to this string |
|
protected |
Create a linearization dictionary for the current document and return a pointer to it after inserting it into the vector of PdfObjects
void PoDoFo::PdfWriter::FillTrailerObject | ( | PdfObject * | pTrailer, |
pdf_long | lSize, | ||
bool | bOnlySizeKey | ||
) | const |
Add required keys to a trailer object
pTrailer | add keys to this object |
lSize | number of objects in the PDF file |
bOnlySizeKey | write 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!
pObject | object to calculate the byte offset (has to be a child of this PdfWriter) |
pulOffset | pointer to an unsigned long to save the offset |
|
inline |
|
inline |
|
inline |
|
inline |
Get the PDF version of the document
|
inline |
Get the file format version of the pdf
|
inline |
|
inline |
|
inline |
Get the write mode used for writing the PDF
void PoDoFo::PdfWriter::SetEncrypted | ( | const PdfEncrypt & | rEncrypt | ) |
Set the written document to be encrypted using a PdfEncrypt object
rEncrypt | an encryption object which is used to encrypt the written PDF file |
|
inline |
Set whether writing an incremental update. Default is false.
bIncrementalUpdate | if true an incremental update will be written |
|
inline |
Enabled linearization for this document. I.e. optimize it for web usage. Default is false.
bLinearize | if true create a web optimized PDF file |
|
inline |
Set the PDF Version of the document. Has to be called before Write() to have an effect.
eVersion | version of the pdf document |
|
inline |
Sets an offset to the previous XRef table. Set it to lower than or equal to 0, to not write a reference to the previous XRef table. The default is 0.
lPrevXRefOffset | the previous XRef table offset |
|
inline |
Create a XRef stream which is in some case more compact but requires at least PDF 1.5 Default is false.
bStream | if true a XRef stream object will be created |
|
inline |
Set the write mode to use when writing the PDF.
eWriteMode | write mode |
void PoDoFo::PdfWriter::Write | ( | const char * | pszFilename | ) |
Writes the complete document to a PDF file.
pszFilename | filename of a PDF file. |
void PoDoFo::PdfWriter::Write | ( | PdfOutputDevice * | pDevice | ) |
Writes the complete document to a PdfOutputDevice
pDevice | write to the specified device |
|
protected |
Internal implementation of the Write() call with the common code
pDevice | write to this output device |
bRewriteXRefTable | whether will rewrite whole XRef table (used only if GetIncrementalUpdate() returns true) |
|
protected |
Writes a linearized PDF file
pDevice | write to this output device |
|
protected |
Writes the pdf header to the current file.
pDevice | write to this output device |
|
protected |
Write pdf objects to file
pDevice | write to this output device |
vecObjects | write all objects in this vector to the file |
pXref | add all written objects to this XRefTable |
bRewriteXRefTable | whether will rewrite whole XRef table (used only if GetIncrementalUpdate() returns true) |
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.
ppBuffer | where this points the address of the buffer will be written after that being malloc()'d and the document will be written to that buffer. |
pulLen | the buffer length will be returned in this parameter |
void PoDoFo::PdfWriter::WriteUpdate | ( | PdfOutputDevice * | pDevice, |
PdfInputDevice * | pSourceInputDevice, | ||
bool | bRewriteXRefTable | ||
) |
Writes the document changes to an output device
pDevice | write to the specified device |
pSourceInputDevice | where to copy original content from; can be NULL |
bRewriteXRefTable | whether to rewrite whole XRef table |
Writes an incremental update to the pDevice, using the pSourceInputDevice content as the original file content. When the pSourceInputDevice is NULL, the caller is responsible to have the pDevice filled with the previous content and to have it positioned at the end of the stream.
Calling this also switches the writer to the incremental update mode.
|
protected |
Reorder and renumber all object as required for linearized PDF files. This function is very slow.
pLinearize | linearization dictionary |
pHint | primary hint stream dictionary |
pPage | first page to display in the document |
ppLast | the pointer will be initialized to the last object belonging to the first page Initialize m_pPagesTree with its correct value Always call this function before 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 |
pLinearize | a linearization dictionary |
pHint | the hint stream |
pPage | the first page in the linearized PDF file |
pLast | pointer of the last object belonging to the first page |
pVecXRefOffset | xref table entries for previous entry |