All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pdftron::PDF::PDFDoc Class Reference

#include <PDFDoc.h>

Public Types

enum  ActionTriggerEvent {
  e_action_trigger_doc_will_close = 17, e_action_trigger_doc_will_save = 18, e_action_trigger_doc_did_save = 19, e_action_trigger_doc_will_print = 20,
  e_action_trigger_doc_did_print = 21
}
 
enum  InsertFlag { e_none, e_insert_bookmark, e_insert_goto_bookmark }
 
enum  ExtractFlag { e_forms_only, e_annots_only, e_both, e_annots_only_no_links = 5 }
 

Public Member Functions

 PDFDoc ()
 
 PDFDoc (SDF::SDFDoc &sdfdoc)
 
 PDFDoc (const PDFDoc &other)
 
PDFDocoperator= (const PDFDoc &)
 
 PDFDoc (const UString &filepath)
 
 PDFDoc (const char *filepath)
 
 PDFDoc (Filters::Filter stream)
 
 PDFDoc (const UChar *buf, size_t buf_size)
 
 ~PDFDoc ()
 
void Close ()
 
bool IsEncrypted ()
 
bool InitSecurityHandler (void *custom_data=0)
 
bool InitStdSecurityHandler (const char *password, int password_sz)
 
bool InitStdSecurityHandler (const pdftron::UString &password)
 
bool InitStdSecurityHandler (const std::vector< UInt8 > &password_buf)
 
SDF::SecurityHandler GetSecurityHandler ()
 
void SetSecurityHandler (SDF::SecurityHandler handler)
 
void RemoveSecurity ()
 
bool HasSignatures ()
 
SDF::SignatureHandlerId AddSignatureHandler (const SDF::SignatureHandler &signature_handler)
 
SDF::SignatureHandlerId AddStdSignatureHandler (const UString &pkcs12_keyfile, const UString &pkcs12_keypass)
 
SDF::SignatureHandlerId AddStdSignatureHandler (const std::vector< unsigned char > &pkcs12_keybuffer, const UString &pkcs12_keypass)
 
void RemoveSignatureHandler (const SDF::SignatureHandlerId signature_handler_id)
 
SDF::SignatureHandlerGetSignatureHandler (const SDF::SignatureHandlerId signature_handler_id)
 
SDF::UndoManager GetUndoManager ()
 
PDF::DigitalSignatureField CreateDigitalSignatureField (const UString &in_sig_field_name="")
 
PDF::DigitalSignatureFieldIterator GetDigitalSignatureFieldIterator ()
 
PDF::DigitalSignatureField::DocumentPermissions GetDigitalSignaturePermissions () const
 
PDFDocInfo GetDocInfo ()
 
PDFDocViewPrefs GetViewPrefs ()
 
SDF::Obj GetTriggerAction (PDFDoc::ActionTriggerEvent trigger)
 
bool IsModified () const
 
bool HasRepairedXRef () const
 
bool IsLinearized () const
 
bool HasDownloader ()
 
int GetDownloadedByteCount ()
 
int GetTotalRemoteByteCount ()
 
void Save (const UString &path, UInt32 flags)
 
void Save (const UString &path, UInt32 flags, Common::ProgressMonitor *progress)
 
std::vector< unsigned char > Save (UInt32 flags)
 
void Save (const char *&out_buf, size_t &out_buf_size, UInt32 flags, Common::ProgressMonitor *progress)
 
void Save (Filters::Filter &stream, UInt32 flags)
 
PageIterator GetPageIterator (UInt32 page_number=1)
 
Page GetPage (UInt32 page_number)
 
void PageRemove (const PageIterator &page_itr)
 
void PageInsert (PageIterator &where, Page page)
 
void InsertPages (int insert_before_page_number, PDFDoc &src_doc, int start_page, int end_page, enum InsertFlag flag, Common::ProgressMonitor *monitor=0)
 
void InsertPages (int insert_before_page_number, PDFDoc &src_doc, const PageSet &source_page_set, enum InsertFlag flag, Common::ProgressMonitor *monitor=0)
 
void MovePages (int move_before_page_number, PDFDoc &src_doc, int start_page, int end_page, enum InsertFlag flag, Common::ProgressMonitor *monitor=0)
 
void MovePages (int move_before_page_number, PDFDoc &src_doc, const PageSet &source_page_set, enum InsertFlag flag, Common::ProgressMonitor *monitor=0)
 
void PagePushFront (Page page)
 
void PagePushBack (Page page)
 
std::vector< PageImportPages (const std::vector< Page > &pages, bool import_bookmarks=false)
 
Page PageCreate (const Rect &media_box=Rect(0, 0, 612, 792))
 
class Bookmark GetFirstBookmark ()
 
void AddRootBookmark (class Bookmark root_bookmark)
 
SDF::Obj GetTrailer ()
 
SDF::Obj GetRoot ()
 
SDF::Obj GetPages ()
 
int GetPageCount ()
 
FieldIterator GetFieldIterator ()
 
FieldIterator GetFieldIterator (const UString &field_name)
 
Field GetField (const UString &field_name)
 
Field FieldCreate (const UString &field_name, Field::Type type, SDF::Obj field_value=0, SDF::Obj def_field_value=0)
 
Field FieldCreate (const UString &field_name, Field::Type type, const UString &field_value, const UString &def_field_value="")
 
void RefreshFieldAppearances ()
 
void FlattenAnnotations (bool forms_only=false)
 
SDF::Obj GetAcroForm ()
 
FDF::FDFDoc FDFExtract (enum ExtractFlag flag=e_forms_only)
 
FDF::FDFDoc FDFExtract (PageSet &pages_to_extract, enum ExtractFlag flag=e_forms_only)
 
FDF::FDFDoc FDFExtract (const std::vector< Annot > &annotations)
 
FDF::FDFDoc FDFExtract (const std::vector< Annot > &annot_added, const std::vector< Annot > &annot_modified, const std::vector< Annot > &annot_deleted)
 
void FDFMerge (FDF::FDFDoc &fdf_doc)
 
void FDFUpdate (FDF::FDFDoc &fdf_doc)
 
Action GetOpenAction ()
 
void SetOpenAction (const Action &action)
 
void AddFileAttachment (const UString &file_key, FileSpec embedded_file)
 
PageLabel GetPageLabel (int page_num)
 
void SetPageLabel (int page_num, PageLabel &label)
 
void RemovePageLabel (int page_num)
 
bool IsTagged ()
 
Struct::STree GetStructTree ()
 
bool HasOC () const
 
SDF::Obj GetOCGs () const
 
OCG::Config GetOCGConfig () const
 
void AddHighlights (const UString &hilite)
 
SDF::Obj CreateIndirectName (const char *name)
 
SDF::Obj CreateIndirectArray ()
 
SDF::Obj CreateIndirectBool (bool value)
 
SDF::Obj CreateIndirectDict ()
 
SDF::Obj CreateIndirectNull ()
 
SDF::Obj CreateIndirectNumber (double value)
 
SDF::Obj CreateIndirectString (const UChar *value, UInt32 size)
 
SDF::Obj CreateIndirectString (const UString &str)
 
SDF::Obj CreateIndirectStream (Filters::FilterReader &data, Filters::Filter filter_chain=Filters::Filter(0, false))
 
SDF::Obj CreateIndirectStream (const char *data, const size_t data_size, Filters::Filter filter_chain=Filters::Filter(0, false))
 
SDF::SDFDocGetSDFDoc ()
 
 operator SDF::SDFDoc & ()
 
void Lock ()
 
void Unlock ()
 
bool TryLock (int milliseconds=0)
 
void LockRead ()
 
void UnlockRead ()
 
bool TryLockRead (int milliseconds=0)
 
UString GetFileName () const
 
void GenerateThumbnails (UInt32 size)
 
void AppendVisualDiff (Page p1, Page p2, DiffOptions *opts)
 
ptrdiff_t GetHandleInternal ()
 

Static Public Member Functions

static PDFDocCreateInternal (ptrdiff_t impl)
 

Detailed Description

PDFDoc is a high-level class describing a single PDF (Portable Document Format) document. Most applications using PDFNet will use this class to open existing PDF documents, or to create new PDF documents from scratch.

The class offers a number of entry points into the document. For example,

  • To access pages use pdfdoc.GetPageIterator() or pdfdoc.PageFind(page_num).
  • To access form fields use pdfdoc.GetFieldIterator() or pdfdoc.FieldFind(name).
  • To access document's meta-data use pdfdoc.GetDocInfo().
  • To access the outline tree use pdfdoc.GetFirstBookmark().
  • To access low-level Document Catalog use pdfdoc.GetRoot(). ...

The class also offers utility methods to slit and merge PDF pages, to create new pages, to flatten forms, to change security settings, etc.

Definition at line 65 of file PDFDoc.h.

Member Enumeration Documentation

Enumerator
e_action_trigger_doc_will_close 
e_action_trigger_doc_will_save 
e_action_trigger_doc_did_save 
e_action_trigger_doc_will_print 
e_action_trigger_doc_did_print 

Definition at line 400 of file PDFDoc.h.

Enumerator
e_forms_only 
e_annots_only 
e_both 
e_annots_only_no_links 

Definition at line 936 of file PDFDoc.h.

Enumerator
e_none 
e_insert_bookmark 
e_insert_goto_bookmark 

Definition at line 604 of file PDFDoc.h.

Constructor & Destructor Documentation

pdftron::PDF::PDFDoc::PDFDoc ( )

Default constructor. Creates an empty new document.

pdftron::PDF::PDFDoc::PDFDoc ( SDF::SDFDoc sdfdoc)

Create a PDF document from an existing SDF/Cos document.

Parameters
sdfdoca pointer to the SDF document. Created PDFDoc will take the ownership of the low-level document.
Note
the SDFDoc will become invalid. If you would like to access the low level document use GetSDFDoc
pdftron::PDF::PDFDoc::PDFDoc ( const PDFDoc other)

Create a shallow copy of another PDFDoc

Parameters
othera reference to the PDF document to clone. Created PDFDoc will retain a reference to the same low-level document as the source.
pdftron::PDF::PDFDoc::PDFDoc ( const UString filepath)

Open an existing PDF document

Parameters
filepath- pathname to the file.
Note
Make sure to call InitSecurityHandler() after PDFDoc(...) in case a document is encrypted
pdftron::PDF::PDFDoc::PDFDoc ( const char *  filepath)
pdftron::PDF::PDFDoc::PDFDoc ( Filters::Filter  stream)

Open an existing PDF document

Parameters
stream- input stream containing a serialized document. The input stream may be a random-access file, memory buffer, slow HTTP connection etc.
Note
if the input stream doesn't support Seek() operation the document will load whole data stream in memory before parsing. In case of linearized PDF, the document may be parsed on-the-fly while it is being loaded in memory. Note that since MappedFile implements Seek() interface, the document does not have to be fully in memory before it is used.
Make sure to call InitSecurityHandler() after PDFDoc(...) for encrypted documents.
PDFDoc takes the ownership of the stream.
pdftron::PDF::PDFDoc::PDFDoc ( const UChar buf,
size_t  buf_size 
)

Open a SDF/Cos document from a memory buffer.

Note
the document should be fully loaded in the memory buffer.
the buffer ownership is not transfered to the document so the user should clean-up any allocated memory if necessary.
Parameters
buf- a memory buffer containing the serialized document
buf_size- the size of memory buffer.
pdftron::PDF::PDFDoc::~PDFDoc ( )

Destructor

Member Function Documentation

void pdftron::PDF::PDFDoc::AddFileAttachment ( const UString file_key,
FileSpec  embedded_file 
)

Associates a file attachment with the document.

The file attachment will be displayed in the user interface of a viewer application (in Acrobat this is File Attachment tab). The function differs from Annot.CreateFileAttachment() because it associates the attachment with the whole document instead of an annotation on a specific page.

Parameters
file_keyA key/name under which the attachment will be stored.
embedded_fileEmbedded file stream
Note
Another way to associate a file attachment with the document is using SDF::NameTree:
* SDF::NameTree names = SDF::NameTree::Create(doc, "EmbeddedFiles");
* names.Put(file_key, file_keysz, embedded_file.GetSDFObj());
*
void pdftron::PDF::PDFDoc::AddHighlights ( const UString hilite)

AddHighlights is used to highlight text in a document using 'Adobe's Highlight File Format' (Technical Note #5172 ). The method will parse the character offset data and modify the current document by adding new highlight annotations.

Parameters
hilitea string representing the filename for the highlight file or or a data buffer containing XML data.
Exceptions
Anexception will be thrown if the XML file is malformed or os out of sync with the document.
void pdftron::PDF::PDFDoc::AddRootBookmark ( class Bookmark  root_bookmark)

Adds/links the specified Bookmark to the root level of document's outline tree.

Parameters
root_bookmarkBookmark to Add/link
Note
parameter 'root_bookmark' must not be linked (must not be belong) to a bookmark tree.
SDF::SignatureHandlerId pdftron::PDF::PDFDoc::AddSignatureHandler ( const SDF::SignatureHandler signature_handler)

Adds a signature handler to the signature manager.

Parameters
signature_handlerThe signature handler instance to add to the signature manager.
Returns
A unique ID representing the SignatureHandler within the SignatureManager.
SDF::SignatureHandlerId pdftron::PDF::PDFDoc::AddStdSignatureHandler ( const UString pkcs12_keyfile,
const UString pkcs12_keypass 
)

Adds a standard (built-in) signature handler to the signature manager. This method will use cryptographic algorithm based on Adobe.PPKLite/adbe.pkcs7.detached filter to sign a PDF.

Parameters
pkcs12_fileThe private key certificate store to use.
pkcs12_passThe passphrase for the provided private key.
Returns
A unique ID representing the SignatureHandler within the SignatureManager.
SDF::SignatureHandlerId pdftron::PDF::PDFDoc::AddStdSignatureHandler ( const std::vector< unsigned char > &  pkcs12_keybuffer,
const UString pkcs12_keypass 
)

Adds a standard (built-in) signature handler to the signature manager. This method will use cryptographic algorithm based on Adobe.PPKLite/adbe.pkcs7.detached filter to sign a PDF.

Parameters
pkcs12_keybufferThe private key certificate store to use (as a data buffer in an array of bytes).
pkcs12_passThe passphrase for the provided private key.
Returns
A unique ID representing the SignatureHandler within the SignatureManager.
void pdftron::PDF::PDFDoc::AppendVisualDiff ( Page  p1,
Page  p2,
DiffOptions *  opts 
)

Generates a PDF diff of the given pages by overlaying and blending them on top of each other.

void pdftron::PDF::PDFDoc::Close ( )

Close PDFDoc

PDF::DigitalSignatureField pdftron::PDF::PDFDoc::CreateDigitalSignatureField ( const UString in_sig_field_name = "")

Creates an unsigned digital signature form field inside the document.

Parameters
in_sig_field_nameThe fully-qualified name to give the digital signature field. If one is not provided, a unique name is created automatically.
Returns
A DigitalSignatureField object representing the created digital signature field.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectArray ( )

This method creates an SDF/Cos indirect array object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect array object.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectBool ( bool  value)

This method creates an SDF/Cos indirect boolean object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect boolean object.
Parameters
valuethe value with which to create the boolean object.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectDict ( )

This method creates an SDF/Cos indirect dict object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect dict object.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectName ( const char *  name)

This method creates an SDF/Cos indirect name object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectNull ( )

This method creates an SDF/Cos indirect null object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect null object.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectNumber ( double  value)

This method creates an SDF/Cos indirect number object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect number object.
Parameters
valuethe value with which to create the number object.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectStream ( Filters::FilterReader data,
Filters::Filter  filter_chain = Filters::Filter(0, false) 
)

This method creates an SDF/Cos indirect stream object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect stream object.
Parameters
datareference to a FilterReader object with which to create the stream object.
filter_chainfilter object with which to create the stream object. Defaults to Filters::Filter(0,false)
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectStream ( const char *  data,
const size_t  data_size,
Filters::Filter  filter_chain = Filters::Filter(0, false) 
)

This method creates an SDF/Cos indirect stream object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect stream object.
Parameters
datapointer to string with which to create the stream object.
data_sizelength of string.
filter_chainfilter object with which to create the stream object. Defaults to Filters::Filter(0,false)
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectString ( const UChar value,
UInt32  size 
)

This method creates an SDF/Cos indirect string object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect string object.
Parameters
valueUnsigned char pointer with which to create the string object.
sizelength of string.
SDF::Obj pdftron::PDF::PDFDoc::CreateIndirectString ( const UString str)

This method creates an SDF/Cos indirect string object

Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects can be shared).

Returns
Returns a new indirect string object.
Parameters
strreference to string with which to create the string object.
static PDFDoc* pdftron::PDF::PDFDoc::CreateInternal ( ptrdiff_t  impl)
static
FDF::FDFDoc pdftron::PDF::PDFDoc::FDFExtract ( enum ExtractFlag  flag = e_forms_only)

Extract form data and/or annotations to FDF

Parameters
flag- specifies extract options
Returns
a pointer to the newly created FDF file with an interactive data.
FDF::FDFDoc pdftron::PDF::PDFDoc::FDFExtract ( PageSet pages_to_extract,
enum ExtractFlag  flag = e_forms_only 
)

Extract form data and/or annotations to FDF

Parameters
pages_to_extractThe set of pages for which to extract interactive data.
flagspecifies extract options
Returns
a pointer to the newly created FDF file with an interactive data.
FDF::FDFDoc pdftron::PDF::PDFDoc::FDFExtract ( const std::vector< Annot > &  annotations)

Extract selected annotations to FDF

Parameters
annotationsthe annotation(s) to extract
Returns
a pointer to the newly created FDF file with the interactive data.
FDF::FDFDoc pdftron::PDF::PDFDoc::FDFExtract ( const std::vector< Annot > &  annot_added,
const std::vector< Annot > &  annot_modified,
const std::vector< Annot > &  annot_deleted 
)

Extract annotations to FDF

Parameters
annot_addedspecifies the array of added annotations
annot_modifiedspecifies the array of modified annotations
annot_deletedspecifies the array of deleted annotations
Returns
a pointer to the newly created FDF file with an interactive data.
void pdftron::PDF::PDFDoc::FDFMerge ( FDF::FDFDoc fdf_doc)

Import form data from FDF file to PDF interactive form.

Parameters
fdf_doc- a reference to the FDF file
void pdftron::PDF::PDFDoc::FDFUpdate ( FDF::FDFDoc fdf_doc)

Replace existing form and annotation data with those imported from the FDF file. Since this method avoids updating annotations unnecessarily it is ideal for incremental save.

Parameters
fdf_doc- a reference to the FDF file
Field pdftron::PDF::PDFDoc::FieldCreate ( const UString field_name,
Field::Type  type,
SDF::Obj  field_value = 0,
SDF::Obj  def_field_value = 0 
)

Create a new interactive form Field.

Returns
the new form Field.
Parameters
field_namea string representing the fully qualified name of the field (e.g. "employee.name.first"). field_name must be either a unique name or equal to an existing terminal field name.
typefield type (e.g. Field::e_text, Field::e_button, etc.)
field_value
def_field_value
Exceptions
if'field_name' is equal to an existing non-terminal field name an exception is thrown.
Field pdftron::PDF::PDFDoc::FieldCreate ( const UString field_name,
Field::Type  type,
const UString field_value,
const UString def_field_value = "" 
)
void pdftron::PDF::PDFDoc::FlattenAnnotations ( bool  forms_only = false)

Flatten all annotations in the document.

Parameters
forms_onlyif false flatten all annotations, otherwise flatten only form fields.
void pdftron::PDF::PDFDoc::GenerateThumbnails ( UInt32  size)

Generates thumbnail images for all the pages in this PDF document.

Parameters
sizeThe maximum dimension (width or height) that thumbnails will have.
SDF::Obj pdftron::PDF::PDFDoc::GetAcroForm ( )
Returns
the AcroForm dictionary located in "/Root" or NULL if dictionary is not present.
PDF::DigitalSignatureFieldIterator pdftron::PDF::PDFDoc::GetDigitalSignatureFieldIterator ( )

Retrieves an iterator that iterates over digital signature fields.

Returns
An iterator that iterates over digital signature fields.
PDF::DigitalSignatureField::DocumentPermissions pdftron::PDF::PDFDoc::GetDigitalSignaturePermissions ( ) const

Retrieves the most restrictive document permissions locking level from all of the signed digital signatures in the document.

Returns
An enumerated value representing the most restrictive document permission level found in the document.
PDFDocInfo pdftron::PDF::PDFDoc::GetDocInfo ( )
Returns
The class representing document information metadata. (i.e. entries in the document information dictionary).
int pdftron::PDF::PDFDoc::GetDownloadedByteCount ( )

Returns the number of bytes that have been downloaded, when HasDownloader() is True.

Returns
The number bytes downloaded.
Exceptions
if'HasDownloader()` returns False, calling this method will result in an exception.
Field pdftron::PDF::PDFDoc::GetField ( const UString field_name)
Parameters
field_name- a string representing the fully qualified name of the field (e.g. "employee.name.first").
Returns
a FieldIterator referring to an interactive Field or to invalid field if the field name was not found. If a given field name was not found itr.HasNext() will return false. For example:
* FieldIterator itr = pdfdoc.FieldFind("name");
* if (itr.HasNext()) {
* Console.WriteLine("Field name: {0}", itr.Current().GetName());
* }
* else { ...field was not found... }
*
FieldIterator pdftron::PDF::PDFDoc::GetFieldIterator ( )

An interactive form (sometimes referred to as an AcroForm) is a collection of fields for gathering information interactively from the user. A PDF document may contain any number of fields appearing on any combination of pages, all of which make up a single, global interactive form spanning the entire document.

The following methods are used to access and manipulate Interactive form fields (sometimes referred to as AcroForms).

Returns
an iterator to the first Field in the document.

The list of all Fields present in the document can be traversed as follows:

* FieldIterator itr = pdfdoc.GetFieldIterator();
* for(; itr.HasNext(); itr.Next()) {
* Field field = itr.Current();
* Console.WriteLine("Field name: {0}", field.GetName());
* }
*

For a full sample, please refer to 'InteractiveForms' sample project.

FieldIterator pdftron::PDF::PDFDoc::GetFieldIterator ( const UString field_name)
UString pdftron::PDF::PDFDoc::GetFileName ( ) const
Returns
The filename of the document if the document is loaded from disk, or empty string if the document is not yet saved or is loaded from a memory buffer.
class Bookmark pdftron::PDF::PDFDoc::GetFirstBookmark ( )
Returns
- the first Bookmark from the document's outline tree. If the Bookmark tree is empty the underlying SDF/Cos Object is null and returned Bookmark is not valid (i.e. Bookmark::IsValid() returns false).
ptrdiff_t pdftron::PDF::PDFDoc::GetHandleInternal ( )
OCG::Config pdftron::PDF::PDFDoc::GetOCGConfig ( ) const
Returns
the default optional-content configuration for the document from the OCProperties D entry.
SDF::Obj pdftron::PDF::PDFDoc::GetOCGs ( ) const
Returns
the Obj array that contains optional-content groups (OCGs) for the document, or NULL if the document does not contain any OCGs. The order of the groups is not guaranteed to be the creation order, and is not the same as the display order.
Action pdftron::PDF::PDFDoc::GetOpenAction ( )
Returns
Action that is triggered when the document is opened. The returned action can be either a destination or some other kind of Action (see Section 8.5, 'Actions' in PDF Reference Manual).
Note
if the document does not nave associated action the returned Action will be null (i.e. Action.IsValid() returns false)
Page pdftron::PDF::PDFDoc::GetPage ( UInt32  page_number)
Parameters
page_number- the page number in document's page sequence. Page numbers in document's page sequence are indexed from 1.
Returns
a Page corresponding to a given page number, or null (invalid page) if the document does not contain the given page number.

For example:

* Page page = pdfdoc.GetPage(page_num);
* if (page == null) return; // Page not found
*
int pdftron::PDF::PDFDoc::GetPageCount ( )
Returns
the number of pages in the document.
PageIterator pdftron::PDF::PDFDoc::GetPageIterator ( UInt32  page_number = 1)

Use the Next() method on the returned iterator to traverse all pages in the document. For example:

* PageIterator itr = pdfdoc.GetPageIterator();
* while (itr.HasNext()) { // Read every page
* Page page = itr.Current();
* // ...
* itr.Next()
* }
*

For full sample code, please take a look at ElementReader, PDFPageTest and PDFDraw sample projects.

Returns
an iterator to the first page in the document.
Parameters
page_numberpage to set the iterator on. 1 corresponds to the first page.
PageLabel pdftron::PDF::PDFDoc::GetPageLabel ( int  page_num)
Returns
the PageLabel that is in effect for the given page. If there is no label object in effect, this method returns an invalid page label object.
Parameters
page_numThe page number. Because PDFNet indexes pages starting from 1, page_num must be larger than 0.
SDF::Obj pdftron::PDF::PDFDoc::GetPages ( )
Returns
- A dictionary representing the root of the low level page-tree
SDF::Obj pdftron::PDF::PDFDoc::GetRoot ( )
Returns
- A dictionary representing the Cos root of the document (/Root entry within the trailer dictionary)
SDF::SDFDoc& pdftron::PDF::PDFDoc::GetSDFDoc ( )
Returns
document's SDF/Cos document
SDF::SecurityHandler pdftron::PDF::PDFDoc::GetSecurityHandler ( )
Returns
Currently selected SecurityHandler.
Note
InitSecurityHandler() should be called before GetSecurityHandler() in order to initialize the handler.
Returned security handler can be modified in order to change the security settings of the existing document. Changes to the current handler will not invalidate the access to the original file and will take effect during document Save().
If the security handler is modified, document will perform a full save even if e_incremental was given as a flag in Save() method.
SDF::SignatureHandler* pdftron::PDF::PDFDoc::GetSignatureHandler ( const SDF::SignatureHandlerId  signature_handler_id)

Gets the associated signature handler instance from the signature manager by looking it up with the handler name.

Parameters
signature_handler_idThe unique id of the signature handler to get.
Returns
The signature handler instance if found, otherwise NULL.
Struct::STree pdftron::PDF::PDFDoc::GetStructTree ( )
Returns
The document's logical structure tree root.
int pdftron::PDF::PDFDoc::GetTotalRemoteByteCount ( )

Returns the document's total size in bytes, when HasDownloader() is True.

Returns
The total number of bytes in the remote document.
Exceptions
if'HasDownloader()` returns False, calling this method will result in an exception.
SDF::Obj pdftron::PDF::PDFDoc::GetTrailer ( )
Returns
- A dictionary representing the Cos root of the document (document's trailer)
SDF::Obj pdftron::PDF::PDFDoc::GetTriggerAction ( PDFDoc::ActionTriggerEvent  trigger)

Get the Action associated with the selected Doc Trigger event.

Parameters
triggerthe type of trigger event to get
Returns
the Action Obj if present, otherwise NULL
SDF::UndoManager pdftron::PDF::PDFDoc::GetUndoManager ( )
Returns
The UndoManager object (one-to-one mapped to document)
PDFDocViewPrefs pdftron::PDF::PDFDoc::GetViewPrefs ( )
Returns
Viewer preferences for this document.

PDFDocViewPrefs is a high-level utility class that can be used to control the way the document is to be presented on the screen or in print.

bool pdftron::PDF::PDFDoc::HasDownloader ( )

Indicates whether this document was created via the PDFViewCtrl method OpenURLAsync.

Returns
True if the document was created via the PDFViewCtrl method OpenURLAsync; False otherwise.
bool pdftron::PDF::PDFDoc::HasOC ( ) const
Returns
true if the optional content (OC) feature is associated with the document. The document is considered to have optional content if there is an OCProperties dictionary in the document's catalog, and that dictionary has one or more entries in the OCGs array.
bool pdftron::PDF::PDFDoc::HasRepairedXRef ( ) const

Checks whether or not the underlying file has an XRef table that had to be repaired when the file was opened. If the document had an invalid XRef table when opened, PDFNet will have repaired the XRef table for its working representation of the document.

Returns
- true if document was found to be corrupted, and was repaired, during opening and has not been saved since.
Note
- If this function returns true, it is not possible to incrementally save the document (see http://www.pdftron.com/kb_corrupt_xref)
bool pdftron::PDF::PDFDoc::HasSignatures ( )

Indicates whether this documents contains any digital signatures.

Returns
True if a digital signature is found in this PDFDoc.
std::vector<Page> pdftron::PDF::PDFDoc::ImportPages ( const std::vector< Page > &  pages,
bool  import_bookmarks = false 
)

The function imports a list of pages to this document. Although a list of pages can be imported using repeated calls to PageInsert(), PageImport will not import duplicate copies of resources that are shared across pages (such as fonts, images, colorspaces etc). Therefore this method is recommended when a page import list consists of several pages that share the same resources.

Parameters
pagesA list of pages to import. All pages should belong to the same source document.
import_bookmarksAn optional flag specifying whether any bookmark items pointing to pages in the import list should be merged with the target (i.e. this) document.
Returns
a list of imported pages. Note that imported pages are not placed in the document page sequence. This can be done using methods such as PageInsert(), PagePushBack(), etc.
bool pdftron::PDF::PDFDoc::InitSecurityHandler ( void *  custom_data = 0)

Initializes document's SecurityHandler. This version of InitSecurityHandler() works with Standard and Custom PDF security and can be used in situations where the password is obtained dynamically via user feedback. See EncTest sample for example code.

This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted.

If the security handler was successfully initialized it can be later obtained using GetSecurityHandler() method.

Exceptions
Anexception is thrown if the matching handler for document's security was not found in the global SecurityManager. In this case, you need to register additional custom security handlers with the global SecurityManager (using SecurityManagerSingleton).
Returns
true if the SecurityHandler was successfully initialized (this may include authentication data collection, verification etc.), false otherwise.
Parameters
custom_dataAn optional parameter used to specify custom data that should be passed in SecurityHandler::Initialize() callback.
bool pdftron::PDF::PDFDoc::InitStdSecurityHandler ( const char *  password,
int  password_sz 
)

Initializes document's SecurityHandler using the supplied password. This version of InitSecurityHandler() assumes that document uses Standard security and that a password is specified directly.

This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted.

If the security handler was successfully initialized, it can be later obtained using GetSecurityHandler() method.

Returns
true if the given password successfully unlocked the document, false otherwise.
Exceptions
Anexception is thrown if the document's security Filter is not 'Standard'. In this case, you need to register additional custom security handlers with the global SecurityManager (SecurityManagerSingleton).
Parameters
passwordSpecifies the password used to open the document without any user feedback. If you would like to dynamically obtain the password, you need to derive a custom class from StdSecurityHandler() and use InitSecurityHandler() without any parameters. See EncTest sample for example code.
password_szAn optional parameter used to specify the size of the password buffer, in bytes. If the 'password_sz' is 0, or if the parameter is not specified, the function assumes that the string is null terminated.
Remarks
Deprecated. Use versions that accepts UString or buffer instead.
bool pdftron::PDF::PDFDoc::InitStdSecurityHandler ( const pdftron::UString password)

Initializes document's SecurityHandler using the supplied password. This version of InitSecurityHandler() assumes that document uses Standard security and that a password is specified directly.

This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted.

If the security handler was successfully initialized, it can be later obtained using GetSecurityHandler() method.

Parameters
passwordSpecifies the password used to open the document without any user feedback. If you would like to dynamically obtain the password, you need to derive a custom class from StdSecurityHandler() and use InitSecurityHandler() without any parameters. See EncTest sample for example code.
Returns
true if the given password successfully unlocked the document, false otherwise.
Exceptions
Anexception is thrown if the document's security Filter is not 'Standard'. In this case, you need to register additional custom security handlers with the global SecurityManager (SecurityManagerSingleton).
bool pdftron::PDF::PDFDoc::InitStdSecurityHandler ( const std::vector< UInt8 > &  password_buf)

Initializes document's SecurityHandler using the supplied password. This version of InitSecurityHandler() assumes that document uses Standard security and that a password is specified directly.

This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted.

If the security handler was successfully initialized, it can be later obtained using GetSecurityHandler() method.

Parameters
password_bufSpecifies the password used to open the document without any user feedback. If you would like to dynamically obtain the password, you need to derive a custom class from StdSecurityHandler() and use InitSecurityHandler() without any parameters. See EncTest sample for example code.
Returns
true if the given password successfully unlocked the document, false otherwise.
Exceptions
Anexception is thrown if the document's security Filter is not 'Standard'. In this case, you need to register additional custom security handlers with the global SecurityManager (SecurityManagerSingleton).
void pdftron::PDF::PDFDoc::InsertPages ( int  insert_before_page_number,
PDFDoc src_doc,
int  start_page,
int  end_page,
enum InsertFlag  flag,
Common::ProgressMonitor *  monitor = 0 
)

Inserts a range of pages from specified PDFDoc

Parameters
insert_before_page_number- the destination of the insertion. If less than or equal to 1, the pages are added to the beginning of the document. If larger than the number of pages in the destination document, the pages are appended to the document.
src_doc- source PDFDoc to insert from
start_page- start of the page number to insert
end_page- end of the page number to insert
flag- specifies insert options
progress- A pointer to the progress interface. NULL if progress tracking is not required.
void pdftron::PDF::PDFDoc::InsertPages ( int  insert_before_page_number,
PDFDoc src_doc,
const PageSet source_page_set,
enum InsertFlag  flag,
Common::ProgressMonitor *  monitor = 0 
)

Inserts a range of pages from specified PDFDoc using PageSet

Parameters
insert_before_page_number- the destination of the insertion. If less than or equal to 1, the pages are added to the beginning of the document. If larger than the number of pages in the destination document, the pages are appended to the document.
src_doc- source PDFDoc to insert from
source_page_set- a collection of the page number to insert
flag- specifies insert options
progress- A pointer to the progress interface. NULL if progress tracking is not required.
bool pdftron::PDF::PDFDoc::IsEncrypted ( )
Returns
true if the document is/was originally encrypted false otherwise.
bool pdftron::PDF::PDFDoc::IsLinearized ( ) const

Call this function to determine whether the document is represented in linearized (fast web view) format.

Returns
- true if document is stored in fast web view format, false otherwise.
Note
any changes to the document can invalidate linearization. The function will return 'true' only if the original document is linearized and if it is not modified.

In order to provide good performance over relatively slow communication links, PDFNet can generate PDF documents with linearized objects and hint tables that can allow a PDF viewer application to download and view one page of a PDF file at a time, rather than requiring the entire file (including fonts and images) to be downloaded before any of it can be viewed.

To save a document in linearized (fast web view) format you only need to pass 'Doc.SaveOptions.e_linearized' flag in the Save method.

bool pdftron::PDF::PDFDoc::IsModified ( ) const

Call this function to determine whether the document has been modified since it was last saved.

Returns
- true if document was modified, false otherwise
bool pdftron::PDF::PDFDoc::IsTagged ( )
Returns
true if this document is marked as Tagged PDF, false otherwise.
void pdftron::PDF::PDFDoc::Lock ( )

Locks the document to prevent competing threads from accessing the document at the same time. Threads attempting to access the document will wait in suspended state until the thread that owns the lock calls doc.Unlock().

void pdftron::PDF::PDFDoc::LockRead ( )

Locks the document to prevent competing write threads (using Lock()) from accessing the document at the same time. Other reader threads however, will be allowed to access the document. Threads attempting to obtain write access to the document will wait in suspended state until the thread that owns the lock calls doc.UnlockRead(). Note: To avoid deadlocks obtaining a write lock while holding a read lock is not permitted and will throw an exception. If this situation is encountered please either unlock the read lock before the write lock is obtained or acquire a write lock (rather than read lock) in the first place.

void pdftron::PDF::PDFDoc::MovePages ( int  move_before_page_number,
PDFDoc src_doc,
int  start_page,
int  end_page,
enum InsertFlag  flag,
Common::ProgressMonitor *  monitor = 0 
)

Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move.

Parameters
move_before_page_number- the destination of the move. If less than or equal to 1, the pages are moved to the beginning of the document. If larger than the number of pages in the destination document, the pages are moved to the end of the document.
src_doc- source PDFDoc to move from
start_page- start of the page number to move
end_page- end of the page number to move
flag- specifies insert options
progress- A pointer to the progress interface. NULL if progress tracking is not required.
Note
MovePages function does not save src_doc. It merely delete pages in memeory. For permanent changes, PDFDoc::Save should be used to save src_doc after function exists.
void pdftron::PDF::PDFDoc::MovePages ( int  move_before_page_number,
PDFDoc src_doc,
const PageSet source_page_set,
enum InsertFlag  flag,
Common::ProgressMonitor *  monitor = 0 
)

Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move.

Parameters
move_before_page_number- the destination of the move. If less than or equal to 1, the pages are moved to the beginning of the document. If larger than the number of pages in the destination document, the pages are moved to the end of the document.
src_doc- source PDFDoc to move from
source_page_set- a collection of the page number to move
flag- specifies insert options
progress- A pointer to the progress interface. NULL if progress tracking is not required.
Note
MovePages function does not save src_doc. It merely delete pages in memeory. For permanent changes, PDFDoc::Save should be used to save src_doc after function exists.
pdftron::PDF::PDFDoc::operator SDF::SDFDoc & ( )
inline

Explicit conversion operator from PDFDoc to SDF::Doc.

Returns
document's SDF/Cos document

Definition at line 1203 of file PDFDoc.h.

PDFDoc& pdftron::PDF::PDFDoc::operator= ( const PDFDoc )
Page pdftron::PDF::PDFDoc::PageCreate ( const Rect media_box = Rect(0, 0, 612, 792))

Create a new, empty page in the document. You can use PageWriter to fill the page with new content. Finally the page should be inserted at specific place within document page sequence using PageInsert/PagePushFront/PagePushBack methods.

Returns
A new, empty page.
Note
the new page still does not belong to document page sequence and should be subsequently placed at a specific location within the sequence.
Parameters
media_boxA rectangle, expressed in default user space units, defining the boundaries of the physical medium on which the page is intended to be displayed or printed. A user space units is 1/72 of an inch. If media_box is not specified the default dimensions of the page are 8.5 x 11 inches (or 8.5*72, 11*72 units).

The following is a listing of some standard U.S. page sizes:

  • Letter = Rect(0, 0, 612, 792)
  • Legal = Rect(0, 0, 612, 1008)
  • Ledger = Rect(0, 0, 1224, 792)
  • Tabloid = Rect(0, 0, 792, 1224)
  • Executive = Rect(0, 0, 522, 756)

The following is a listing of ISO standard page sizes:

  • 4A0 = Rect(0, 0, 4768, 6741)
  • 2A0 = Rect(0, 0, 3370, 4768)
  • A0 = Rect(0, 0, 2384, 3370)
  • A1 = Rect(0, 0, 1684, 2384)
  • A2 = Rect(0, 0, 1191, 1684)
  • A3 = Rect(0, 0, 842, 1191)
  • A4 = Rect(0, 0, 595, 842)
  • A5 = Rect(0, 0, 420, 595)
  • A6 = Rect(0, 0, 298, 420)
  • A7 = Rect(0, 0, 210, 298)
  • A8 = Rect(0, 0, 147, 210)
  • A9 = Rect(0, 0, 105, 147)
  • A10 = Rect(0, 0, 74, 105)
  • B0 = Rect(0, 0, 2835, 4008)
  • B1 = Rect(0, 0, 2004, 2835)
  • B2 = Rect(0, 0, 1417, 2004)
  • B3 = Rect(0, 0, 1001, 1417)
  • B4 = Rect(0, 0, 709, 1001)
  • B5 = Rect(0, 0, 499, 709)
  • B6 = Rect(0, 0, 354, 499)
  • B7 = Rect(0, 0, 249, 354)
  • B8 = Rect(0, 0, 176, 249)
  • B9 = Rect(0, 0, 125, 176)
  • B10 = Rect(0, 0, 88, 125)
  • C0 = Rect(0, 0, 2599, 3677)
  • C1 = Rect(0, 0, 1837, 2599)
  • C2 = Rect(0, 0, 1298, 1837)
  • C3 = Rect(0, 0, 918, 1298)
  • C4 = Rect(0, 0, 649, 918)
  • C5 = Rect(0, 0, 459, 649)
  • C6 = Rect(0, 0, 323, 459)
  • C7 = Rect(0, 0, 230, 323)
  • C8 = Rect(0, 0, 162, 230)
  • C9 = Rect(0, 0, 113, 162)
  • C10 = Rect(0, 0, 79, 113)
void pdftron::PDF::PDFDoc::PageInsert ( PageIterator where,
Page  page 
)

Insert/Import a single page at a specific location in the page sequence.

Parameters
where- The location in the page sequence indicating where to insert the page. The page is inserted before the specified location.
page- A page to insert.
Note
Invalidates all PageIterators pointing to the document.
void pdftron::PDF::PDFDoc::PagePushBack ( Page  page)

Adds a page to the end of a document's page sequence.

Parameters
page- a page to append to the document
Note
Invalidates all PageIterators pointing to the document.
void pdftron::PDF::PDFDoc::PagePushFront ( Page  page)

Adds a page to the beginning of a document's page sequence.

Parameters
page- a page to prepend to the document Invalidates all PageIterators pointing to the document.
void pdftron::PDF::PDFDoc::PageRemove ( const PageIterator page_itr)
Parameters
page_itr- the PageIterator to the page that should be removed A PageIterator for the given page can be obtained using PDFDoc::Find(page_num) or using direct iteration through document's page sequence.
void pdftron::PDF::PDFDoc::RefreshFieldAppearances ( )

Regenerates the appearance stream for every widget annotation in the document Call this method if you modified field's value and would like to update field's appearances.

void pdftron::PDF::PDFDoc::RemovePageLabel ( int  page_num)

Removes the page label that is attached to the specified page, effectively merging the specified range with the previous page label sequence.

Parameters
page_numThe page from which the page label is removed. Because PDFNet indexes pages starting from 1, page_num must be larger than 0.
void pdftron::PDF::PDFDoc::RemoveSecurity ( )

This function removes document security.

void pdftron::PDF::PDFDoc::RemoveSignatureHandler ( const SDF::SignatureHandlerId  signature_handler_id)

Removes a signature handler from the signature manager.

Parameters
signature_handler_idThe unique id of the signature handler to remove.
void pdftron::PDF::PDFDoc::Save ( const UString path,
UInt32  flags 
)

Saves the document to a file.

If a full save is requested to the original path, the file is saved to a file system-determined temporary file, the old file is deleted, and the temporary file is renamed to path.

A full save with remove unused or linearization option may re-arrange object in the cross reference table. Therefore all pointers and references to document objects and resources should be re acquired in order to continue document editing.

In order to use incremental save the specified path must match original path and e_incremental flag bit should be set.

Parameters
path- The full path name to which the file is saved.
flags- A bit field composed of an OR of SDFDoc::SaveOptions values.
progress- A pointer to the progress interface. NULL if progress tracking is not required.
Exceptions
-if the file can't be opened for saving or if there is a problem during Save an Exception object will be thrown.
Note
- Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
- If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then it can not be saved using the e_incremental flag.
void pdftron::PDF::PDFDoc::Save ( const UString path,
UInt32  flags,
Common::ProgressMonitor *  progress 
)
std::vector<unsigned char> pdftron::PDF::PDFDoc::Save ( UInt32  flags)

Saves the document to a memory buffer.

Parameters
out_bufa pointer to the buffer containing the serialized version of the document. (C++ Note) The buffer is owned by a document and the client doesn't need to do any initialization or cleanup.
out_buf_sizethe size of the serialized document (i.e. out_buf) in bytes.
flags- A bit field composed of an OR of SDFDoc::SaveOptions values. Note that this method ignores e_incremental flag.
progress- A pointer to the progress interface. NULL if progress tracking is not required.
Exceptions
-if there is a problem during Save an Exception object will be thrown.
Note
- Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
- If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then it can not be saved using the e_incremental flag.
void pdftron::PDF::PDFDoc::Save ( const char *&  out_buf,
size_t &  out_buf_size,
UInt32  flags,
Common::ProgressMonitor *  progress 
)
void pdftron::PDF::PDFDoc::Save ( Filters::Filter stream,
UInt32  flags 
)

Saves the document to a stream.

Parameters
streamThe output stream where to write data.
flags- A bit field composed of an OR of the SDFDoc::SaveOptions values.
progress- A pointer to the progress interface. NULL if progress tracking is not required.
header- File header. A new file header is set only during full save. See also GetHeader()
Exceptions
-if there is a problem during Save an Exception object will be thrown.
Note
- Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
- If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then it can not be saved using the e_incremental flag.
void pdftron::PDF::PDFDoc::SetOpenAction ( const Action action)

Sets the Action that will be triggered when the document is opened.

Parameters
actionA new Action that will be triggered when the document is opened. An example of such action is a GoTo Action that takes the user to a given location in the document.
void pdftron::PDF::PDFDoc::SetPageLabel ( int  page_num,
PageLabel label 
)

Attaches a label to a page. This establishes the numbering scheme for that page and all following it, until another page label is encountered. This label allows PDF producers to define a page numbering system other than the default.

Parameters
page_numThe number of the page to label. If page_num is less than 1 or greater than the number of pages in the document, the method does nothing.
void pdftron::PDF::PDFDoc::SetSecurityHandler ( SDF::SecurityHandler  handler)

The function sets a new SecurityHandler as the current security handler.

Parameters
handlernew SecurityHandler
Note
Setting a new security handler will not invalidate the access to the original file and will take effect during document Save().
If the security handler is modified, document will perform a full save even if e_incremental was given as a flag in Save() method.
bool pdftron::PDF::PDFDoc::TryLock ( int  milliseconds = 0)

Try locking the document, waiting no longer than specified number of milliseconds.

Parameters
milliseconds- max number of milliseconds to wait for the document to lock
Returns
true if the document is locked for multi-threaded access, false otherwise.
bool pdftron::PDF::PDFDoc::TryLockRead ( int  milliseconds = 0)

Tries to obtain a read lock the document for <milliseconds> duration, and returns true if the lock was successfully acquired

Parameters
millisecondsduration to obtain a read lock for.
Returns
true if the document is locked for multi-threaded access, false otherwise.
void pdftron::PDF::PDFDoc::Unlock ( )

Removes the lock from the document.

void pdftron::PDF::PDFDoc::UnlockRead ( )

Removes the read lock from the document.


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