Loading...
Searching...
No Matches
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 }
enum | SignaturesVerificationStatus { e_unsigned , e_failure , e_untrusted , e_unsupported , e_verified }

## Public Member Functions
| PDFDoc ()
| PDFDoc (SDF::SDFDoc &sdfdoc)
| PDFDoc (const PDFDoc &other)
PDFDoc & | operator= (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 (const 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::SignatureHandler * | GetSignatureHandler (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 ()
UInt64 | GetDownloadedByteCount ()
UInt64 | 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)
void | SaveCustomSignature (const UChar *in_signature, const size_t in_signature_size, const DigitalSignatureField &in_field, const UString &in_path)
void | SaveCustomSignature (const UChar *in_signature, const size_t in_signature_size, const DigitalSignatureField &in_field, Filters::Filter &out_stream)
void | SaveCustomSignature (const UChar *in_signature, const size_t in_signature_size, const DigitalSignatureField &in_field, const UChar *&out_buf, size_t &out_buf_size)
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< Page > | ImportPages (const std::vector< Page > &pages, bool import_bookmarks=false)
Page | PageCreate (const Rect &media_box=Rect(0, 0, 612, 792))
int | AppendTextDiff (Page page1, Page page2)
int | AppendTextDiff (PDFDoc &doc1, PDFDoc &doc2)
int | AppendTextDiff (PDFDoc &doc1, PDFDoc &doc2, TextDiffOptions *options)
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 | RefreshAnnotAppearances (const RefreshOptions *options=0)
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::SDFDoc & | GetSDFDoc ()
| 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)
void | SaveViewerOptimized (const UString &path, const ViewerOptimizedOptions &opts)
void | SaveViewerOptimized (const char *&out_buf, size_t &out_buf_size, const ViewerOptimizedOptions &opts)
std::vector< unsigned char > | SaveViewerOptimized (const ViewerOptimizedOptions &opts)
SignaturesVerificationStatus | VerifySignedDigitalSignatures (const VerificationOptions &in_opts) const
void | MergeXFDF (Filters::Filter stream, const MergeXFDFOptions *opts=0)
void | MergeXFDF (const UString &xfdf, const MergeXFDFOptions *opts=0)
ptrdiff_t | GetHandleInternal ()

## Static Public Member Functions
static int | HighlightTextDiff (PDFDoc &doc1, PDFDoc &doc2, TextDiffOptions *options)
static PDFDoc * | CreateInternal (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.GetPage(page_num).
- To access form fields use pdfdoc.GetFieldIterator(), pdfdoc.GetFieldIterator(name) or pdfdoc.GetField(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 71 of file PDFDoc.h.

## Member Enumeration Documentation

## ◆ ActionTriggerEvent

enum pdftron::PDF::PDFDoc::ActionTriggerEvent

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 410 of file PDFDoc.h.

## ◆ ExtractFlag

enum pdftron::PDF::PDFDoc::ExtractFlag

Enumerator
e_forms_only |
e_annots_only |
e_both |
e_annots_only_no_links |

Definition at line 1109 of file PDFDoc.h.

## ◆ InsertFlag

enum pdftron::PDF::PDFDoc::InsertFlag

Enumerator
e_none |
e_insert_bookmark |
e_insert_goto_bookmark |

Definition at line 694 of file PDFDoc.h.

## ◆ SignaturesVerificationStatus

enum pdftron::PDF::PDFDoc::SignaturesVerificationStatus

Enumerator
e_unsigned |
e_failure |
e_untrusted |
e_unsupported |
e_verified |

Definition at line 1483 of file PDFDoc.h.

## Constructor & Destructor Documentation

## ◆ PDFDoc() [1/7]

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

Default constructor. Creates an empty new document.

## ◆ PDFDoc() [2/7]

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

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

Parameters

  sdfdoc | a 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

## ◆ PDFDoc() [3/7]

pdftron::PDF::PDFDoc::PDFDoc | ( | const PDFDoc & | other | ) |

Create a shallow copy of another PDFDoc

Parameters

  other | a reference to the PDF document to clone. Created PDFDoc will retain a reference to the same low-level document as the source.

## ◆ PDFDoc() [4/7]

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

## ◆ PDFDoc() [5/7]

pdftron::PDF::PDFDoc::PDFDoc | ( | const char * | filepath | ) |

## ◆ PDFDoc() [6/7]

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.

## ◆ PDFDoc() [7/7]

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.

## ◆ ~PDFDoc()

pdftron::PDF::PDFDoc::~PDFDoc | ( |  | ) |

Destructor

## Member Function Documentation

## ◆ AddFileAttachment()

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_key | A key/name under which the attachment will be stored.
  embedded_file | Embedded 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());
  pdftron::SDF::NameTree
  Definition NameTree.h:48
  pdftron::SDF::NameTree::Create
  static NameTree Create(class SDFDoc &doc, const std::string &name)
  pdftron::SDF::NameTree::Put
  void Put(const UChar *key, int key_sz, Obj value)

## ◆ AddHighlights()

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

  hilite | a string representing the filename for the highlight file or or a data buffer containing XML data.

Exceptions

  An | exception will be thrown if the XML file is malformed or os out of sync with the document.

## ◆ AddRootBookmark()

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_bookmark | Bookmark to Add/link

Note
  parameter 'root_bookmark' must not be linked (must not be belong) to a bookmark tree.

## ◆ AddSignatureHandler()

SDF::SignatureHandlerId pdftron::PDF::PDFDoc::AddSignatureHandler | ( | const SDF::SignatureHandler & | signature_handler | ) |

Adds a signature handler to the signature manager.

Parameters

  signature_handler | The signature handler instance to add to the signature manager.

Returns
  A unique ID representing the SignatureHandler within the SignatureManager.

## ◆ AddStdSignatureHandler() [1/2]

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_keybuffer | The private key certificate store to use (as a data buffer in an array of bytes).
  pkcs12_pass | The passphrase for the provided private key.

Returns
  A unique ID representing the SignatureHandler within the SignatureManager.

## ◆ AddStdSignatureHandler() [2/2]

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_file | The private key certificate store to use.
  pkcs12_pass | The passphrase for the provided private key.

Returns
  A unique ID representing the SignatureHandler within the SignatureManager.

## ◆ AppendTextDiff() [1/3]

int pdftron::PDF::PDFDoc::AppendTextDiff | ( | Page | page1,
|  | Page | page2 )

Imports two external pages and highlights the differences between them. This function adds two new pages to the current document. The two input pages are typically coming from two different PDF files. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

Parameters

  page1 | is the before page, the basis of the comparison (read-only)
  page2 | is the after page, to which the basis is compared (read-only)

Returns
  the total number of differences found

## ◆ AppendTextDiff() [2/3]

int pdftron::PDF::PDFDoc::AppendTextDiff | ( | PDFDoc & | doc1,
|  | PDFDoc & | doc2 )

Imports two external PDFs and highlights the differences between them. This function appends alternating pages from the two input documents into the current document. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

Parameters

  doc1 | is the before document, the basis of the comparison (read-only)
  doc2 | is the after document, to which the basis is compared (read-only)

Returns
  the total number of differences found

## ◆ AppendTextDiff() [3/3]

int pdftron::PDF::PDFDoc::AppendTextDiff | ( | PDFDoc & | doc1,
|  | PDFDoc & | doc2,
|  | TextDiffOptions * | options )

Imports two external PDFs and highlights the differences between them. This function appends alternating pages from the two input documents into the current document. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

Parameters

  doc1 | is the before document, the basis of the comparison (read-only)
  doc2 | is the after document, to which the basis is compared (read-only)
  options | processing options (optional)

Returns
  the total number of differences found

## ◆ AppendVisualDiff()

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.

Parameters

  p1 | one of the two pages for comparing.
  p2 | the other page for comparing.
  opts | options for comparison results.

## ◆ Close()

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

Close PDFDoc

## ◆ CreateDigitalSignatureField()

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_name | The 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.

## ◆ CreateIndirectArray()

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.

## ◆ CreateIndirectBool()

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

  value | the value with which to create the boolean object.

## ◆ CreateIndirectDict()

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.

## ◆ CreateIndirectName()

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).

## ◆ CreateIndirectNull()

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.

## ◆ CreateIndirectNumber()

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

  value | the value with which to create the number object.

## ◆ CreateIndirectStream() [1/2]

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

  data | a buffer from which to create the stream object.
  data_size | size of the buffer.
  filter_chain | filter object with which to create the stream object. Defaults to Filters::Filter(0,false)

## ◆ CreateIndirectStream() [2/2]

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

  data | reference to a FilterReader object with which to create the stream object.
  filter_chain | filter object with which to create the stream object. Defaults to Filters::Filter(0,false)

## ◆ CreateIndirectString() [1/2]

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

  value | Unsigned char pointer with which to create the string object.
  size | length of string.

## ◆ CreateIndirectString() [2/2]

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

  str | reference to string with which to create the string object.

## ◆ CreateInternal()

PDFDoc * pdftron::PDF::PDFDoc::CreateInternal | ( | ptrdiff_t | impl | ) |
| static

## ◆ FDFExtract() [1/4]

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_added | specifies the array of added annotations
  annot_modified | specifies the array of modified annotations
  annot_deleted | specifies the array of deleted annotations

Returns
  a pointer to the newly created FDF file with an interactive data.

## ◆ FDFExtract() [2/4]

FDF::FDFDoc pdftron::PDF::PDFDoc::FDFExtract | ( | const std::vector< Annot > & | annotations | ) |

Extract selected annotations to FDF

Parameters

  annotations | the annotation(s) to extract

Returns
  a pointer to the newly created FDF file with the interactive data.

## ◆ FDFExtract() [3/4]

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.

## ◆ FDFExtract() [4/4]

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_extract | The set of pages for which to extract interactive data.
  flag | specifies extract options

Returns
  a pointer to the newly created FDF file with an interactive data.

## ◆ FDFMerge()

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

## ◆ FDFUpdate()

void pdftron::PDF::PDFDoc::FDFUpdate | ( | FDF::FDFDoc & | fdf_doc | ) |

Replace existing form and annotation data with those imported from the FDF file. It will make annotations in the FDF match those in the PDF. Since this method avoids updating annotations unnecessarily it works well with incremental save and can sometimes preserve annotation appearances, but it requires that the annotations intended to be in the final document be in the provided FDF file.

Note
  Some PDF viewers (like Chrome) cannot display annotations that don't already have an appearance, so it is often desirable to call PDFDoc.RefreshAnnotAppearances after this method to ensure these annotations can still be displayed in those applications.
  This method is not suitable for realtime collaboration.

Parameters

  fdf_doc | a pointer to the FDF file

## ◆ FieldCreate() [1/2]

Field pdftron::PDF::PDFDoc::FieldCreate | ( | const UString & | field_name,
|  | Field::Type | type,
|  | const UString & | field_value,
|  | const UString & | def_field_value = "" )

Create a new interactive form Field.

Parameters

  field_name | a 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.
  type | field type (e.g. Field::e_text, Field::e_button, etc.)
  field_value |
  def_field_value |

Returns
  the new form Field.

Exceptions

  if | 'field_name' is equal to an existing non-terminal field name an exception is thrown.

## ◆ FieldCreate() [2/2]

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.

Parameters

  field_name | a 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.
  type | field type (e.g. Field::e_text, Field::e_button, etc.)
  field_value |
  def_field_value |

Returns
  the new form Field.

Exceptions

  if | 'field_name' is equal to an existing non-terminal field name an exception is thrown.

## ◆ FlattenAnnotations()

void pdftron::PDF::PDFDoc::FlattenAnnotations | ( | bool | forms_only = false | ) |

Flatten all annotations in the document.

Parameters

  forms_only | if false flatten all annotations, otherwise flatten only form fields.

## ◆ GenerateThumbnails()

void pdftron::PDF::PDFDoc::GenerateThumbnails | ( | UInt32 | size | ) |

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

Parameters

  size | The maximum dimension (width or height) that thumbnails will have.

## ◆ GetAcroForm()

SDF::Obj pdftron::PDF::PDFDoc::GetAcroForm | ( |  | ) |

Returns
  the AcroForm dictionary located in "/Root" or NULL if dictionary is not present.

## ◆ GetDigitalSignatureFieldIterator()

PDF::DigitalSignatureFieldIterator pdftron::PDF::PDFDoc::GetDigitalSignatureFieldIterator | ( |  | ) |

Retrieves an iterator that iterates over digital signature fields.

Returns
  An iterator that iterates over digital signature fields.

## ◆ GetDigitalSignaturePermissions()

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.

## ◆ GetDocInfo()

PDFDocInfo pdftron::PDF::PDFDoc::GetDocInfo | ( |  | ) |

Returns
  The class representing document information metadata. (i.e. entries in the document information dictionary).

## ◆ GetDownloadedByteCount()

UInt64 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.

## ◆ GetField()

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.GetFieldIterator("name");
if (itr.HasNext()) {
Console.WriteLine("Field name: {0}", itr.Current().GetName());
}
else { ...field was not found... }
pdftron::Common::Iterator::Current
T & Current()
Definition Iterator.h:50
pdftron::Common::Iterator::HasNext
bool HasNext()
Definition Iterator.h:61
pdftron::PDF::FieldIterator
Common::Iterator< Field > FieldIterator
Definition PDFDoc.h:47

## ◆ GetFieldIterator() [1/2]

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());
}
pdftron::Common::Iterator::Next
void Next()
Definition Iterator.h:41
pdftron::PDF::Field
Definition Field.h:70
pdftron::PDF::Field::GetName
UString GetName()

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

## ◆ GetFieldIterator() [2/2]

FieldIterator pdftron::PDF::PDFDoc::GetFieldIterator | ( | const UString & | field_name | ) |

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).

Parameters

  field_name | String representing the name of the field to get.

Returns
  an iterator to the Field in the document.

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

## ◆ GetFileName()

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.

## ◆ GetFirstBookmark()

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).

## ◆ GetHandleInternal()

ptrdiff_t pdftron::PDF::PDFDoc::GetHandleInternal | ( |  | ) |

## ◆ GetOCGConfig()

OCG::Config pdftron::PDF::PDFDoc::GetOCGConfig | ( |  | ) | const

Returns
  the default optional-content configuration for the document from the OCProperties D entry.

## ◆ GetOCGs()

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.

## ◆ GetOpenAction()

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)

## ◆ GetPage()

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
pdftron::PDF::Page
Definition Page.h:32

## ◆ GetPageCount()

int pdftron::PDF::PDFDoc::GetPageCount | ( |  | ) |

Returns
  the number of pages in the document.

## ◆ GetPageIterator()

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()
}
pdftron::PDF::PageIterator
Common::Iterator< Page > PageIterator
Definition PDFDoc.h:41

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_number | page to set the iterator on. 1 corresponds to the first page.

## ◆ GetPageLabel()

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_num | The page number. Because PDFNet indexes pages starting from 1, page_num must be larger than 0.

## ◆ GetPages()

SDF::Obj pdftron::PDF::PDFDoc::GetPages | ( |  | ) |

Returns
  - A dictionary representing the root of the low level page-tree

## ◆ GetRoot()

SDF::Obj pdftron::PDF::PDFDoc::GetRoot | ( |  | ) |

Returns
  - A dictionary representing the Cos root of the document (/Root entry within the trailer dictionary)

## ◆ GetSDFDoc()

SDF::SDFDoc & pdftron::PDF::PDFDoc::GetSDFDoc | ( |  | ) |

Returns
  document's SDF/Cos document

## ◆ GetSecurityHandler()

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.

## ◆ GetSignatureHandler()

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_id | The unique id of the signature handler to get.

Returns
  The signature handler instance if found, otherwise NULL.

## ◆ GetStructTree()

Struct::STree pdftron::PDF::PDFDoc::GetStructTree | ( |  | ) |

Returns
  The document's logical structure tree root.

## ◆ GetTotalRemoteByteCount()

UInt64 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.

## ◆ GetTrailer()

SDF::Obj pdftron::PDF::PDFDoc::GetTrailer | ( |  | ) |

Returns
  - A dictionary representing the Cos root of the document (document's trailer)

## ◆ GetTriggerAction()

SDF::Obj pdftron::PDF::PDFDoc::GetTriggerAction | ( | PDFDoc::ActionTriggerEvent | trigger | ) |

Get the Action associated with the selected Doc Trigger event.

Parameters

  trigger | the type of trigger event to get

Returns
  the Action Obj if present, otherwise NULL

## ◆ GetUndoManager()

SDF::UndoManager pdftron::PDF::PDFDoc::GetUndoManager | ( |  | ) |

Returns
  The UndoManager object (one-to-one mapped to document)

## ◆ GetViewPrefs()

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.

## ◆ HasDownloader()

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.

## ◆ HasOC()

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.

## ◆ HasRepairedXRef()

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)

## ◆ HasSignatures()

bool pdftron::PDF::PDFDoc::HasSignatures | ( |  | ) |

Indicates whether this documents contains any digital signatures.

Returns
  True if a digital signature is found in this PDFDoc.

## ◆ HighlightTextDiff()

int pdftron::PDF::PDFDoc::HighlightTextDiff | ( | PDFDoc & | doc1,
|  | PDFDoc & | doc2,
|  | TextDiffOptions * | options )
| static

Imports two external PDFs and highlights the differences between them. This function directly adds the highlights to the two input documents. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

Parameters

  doc1 | is the before document, the basis of the comparison
  doc2 | is the after document, to which the basis is compared
  options | processing options (optional)

Returns
  the total number of differences found

## ◆ ImportPages()

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

  pages | A list of pages to import. All pages should belong to the same source document.
  import_bookmarks | An 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.

## ◆ InitSecurityHandler()

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

  An | exception 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_data | An optional parameter used to specify custom data that should be passed in SecurityHandler::Initialize() callback.

## ◆ InitStdSecurityHandler() [1/3]

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

  An | exception 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

  password | Specifies 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_sz | An 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.

## ◆ InitStdSecurityHandler() [2/3]

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

  password | Specifies 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

  An | exception 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).

## ◆ InitStdSecurityHandler() [3/3]

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_buf | Specifies 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

  An | exception 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).

## ◆ InsertPages() [1/2]

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.

## ◆ InsertPages() [2/2]

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.

## ◆ IsEncrypted()

bool pdftron::PDF::PDFDoc::IsEncrypted | ( |  | ) |

Returns
  true if the document is/was originally encrypted false otherwise.

## ◆ IsLinearized()

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.

## ◆ IsModified()

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

## ◆ IsTagged()

bool pdftron::PDF::PDFDoc::IsTagged | ( |  | ) |

Returns
  true if this document is marked as Tagged PDF, false otherwise.

## ◆ Lock()

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().

## ◆ LockRead()

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.

## ◆ MergeXFDF() [1/2]

void pdftron::PDF::PDFDoc::MergeXFDF | ( | const UString & | xfdf,
|  | const MergeXFDFOptions * | opts = 0 )

Merge existing form and annotation data with those imported from the XFDF file. It will replace annotations from pdfdocument with matching annotations from XFDF. In order for the annotations to be considered matching, "name" of the xfdf annotation needs to match "NM" of that in pdf. XFDF annotations that don't have a match in the pdf document will be added. For regular xfdf files, no deletions will be made This method also supports command form of xfdf, for those files, deletions will be performed for annotations in "delete" section Since this method avoids updating annotations unnecessarily it works well with incremental save. Note: This method is suitable for realtime collaboration.

Parameters

  xfdf | xfdf contents in string form or the path to the xfdf file
  opts | MergeXFDFOptions object for finer control

Exceptions

  PDFNetException |

## ◆ MergeXFDF() [2/2]

void pdftron::PDF::PDFDoc::MergeXFDF | ( | Filters::Filter | stream,
|  | const MergeXFDFOptions * | opts = 0 )

Merge existing form and annotation data with those imported from the XFDF file. It will replace annotations from pdfdocument with matching annotations from XFDF. In order for the annotations to be considered matching, "name" of the xfdf annotation needs to match "NM" of that in pdf. XFDF annotations that don't have a match in the pdf document will be added. For regular xfdf files, no deletions will be made This method also supports command form of xfdf, for those files, deletions will be performed for annotations in "delete" section Since this method avoids updating annotations unnecessarily it works well with incremental save. Note: This method is suitable for realtime collaboration.

Parameters

  stream | Input Filter which provides the xfdf contents
  opts | MergeXFDFOptions object for finer control

Exceptions

  PDFNetException |

## ◆ MovePages() [1/2]

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.

## ◆ MovePages() [2/2]

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.

## ◆ operator SDF::SDFDoc &()

pdftron::PDF::PDFDoc::operator SDF::SDFDoc & | ( |  | ) |
| inline

Explicit conversion operator from PDFDoc to SDF::Doc.

Returns
  document's SDF/Cos document

Definition at line 1383 of file PDFDoc.h.

## ◆ operator=()

PDFDoc & pdftron::PDF::PDFDoc::operator= | ( | const PDFDoc & |  | ) |

## ◆ PageCreate()

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_box | A 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)

## ◆ PageInsert()

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.

## ◆ PagePushBack()

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.

## ◆ PagePushFront()

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.

## ◆ PageRemove()

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::GetPageIterator(page_num) or using direct iteration through document's page sequence.

## ◆ RefreshAnnotAppearances()

void pdftron::PDF::PDFDoc::RefreshAnnotAppearances | ( | const RefreshOptions * | options = 0 | ) |

Generates the appearance stream for annotations in the document using the specified options. A common use case is to generate appearances only for missing annotations, which can be accomplished using the default options.

Parameters

  options | Options that can be used to adjust this generation process.

## ◆ RefreshFieldAppearances()

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.

## ◆ RemovePageLabel()

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_num | The page from which the page label is removed. Because PDFNet indexes pages starting from 1, page_num must be larger than 0.

## ◆ RemoveSecurity()

void pdftron::PDF::PDFDoc::RemoveSecurity | ( |  | ) |

This function removes document security.

## ◆ RemoveSignatureHandler()

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

Removes a signature handler from the signature manager.

Parameters

  signature_handler_id | The unique id of the signature handler to remove.

## ◆ Save() [1/5]

void pdftron::PDF::PDFDoc::Save | ( | const char *& | out_buf,
|  | size_t & | out_buf_size,
|  | UInt32 | flags,
|  | Common::ProgressMonitor * | progress )

Saves the document to a memory buffer.

Parameters

  out_buf | a 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_size | the size of the serialized document (i.e. out_buf) in bytes.
  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 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), then it can not be saved using the e_incremental flag.

## ◆ Save() [2/5]

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.

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), then it can not be saved using the e_incremental flag.

## ◆ Save() [3/5]

void pdftron::PDF::PDFDoc::Save | ( | const UString & | path,
|  | UInt32 | flags,
|  | Common::ProgressMonitor * | progress )

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), then it can not be saved using the e_incremental flag.

## ◆ Save() [4/5]

void pdftron::PDF::PDFDoc::Save | ( | Filters::Filter & | stream,
|  | UInt32 | flags )

Saves the document to a stream.

Parameters

  stream | The output stream where to write data.
  flags | - A bit field composed of an OR of the SDFDoc::SaveOptions values.

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), then it can not be saved using the e_incremental flag.

## ◆ Save() [5/5]

std::vector< unsigned char > pdftron::PDF::PDFDoc::Save | ( | UInt32 | flags | ) |

## ◆ SaveCustomSignature() [1/3]

void pdftron::PDF::PDFDoc::SaveCustomSignature | ( | const UChar * | in_signature,
|  | const size_t | in_signature_size,
|  | const DigitalSignatureField & | in_field,
|  | const UChar *& | out_buf,
|  | size_t & | out_buf_size )

Saves a custom signature Contents to a document which has been prepared to receive it. No changes should be made to document in meantime.

Parameters

  in_signature | The signature Contents to write
  in_signature_size | the size of the signature buffer
  in_field | The signature field to which to write
  out_buf | a 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_size | the size of the serialized document (i.e. out_buf) in bytes.

Exceptions

  - | if there is a problem during Save an Exception object will be thrown.

## ◆ SaveCustomSignature() [2/3]

void pdftron::PDF::PDFDoc::SaveCustomSignature | ( | const UChar * | in_signature,
|  | const size_t | in_signature_size,
|  | const DigitalSignatureField & | in_field,
|  | const UString & | in_path )

Saves a custom signature Contents to a document which has been prepared to receive it. No changes should be made to document in meantime.

Parameters

  in_signature | The signature Contents to write
  in_signature_size | the size of the signature buffer
  in_field | The signature field to which to write
  in_path | The full path name to which the file is saved.

Exceptions

  - | if there is a problem during Save an Exception object will be thrown.

## ◆ SaveCustomSignature() [3/3]

void pdftron::PDF::PDFDoc::SaveCustomSignature | ( | const UChar * | in_signature,
|  | const size_t | in_signature_size,
|  | const DigitalSignatureField & | in_field,
|  | Filters::Filter & | out_stream )

Saves a custom signature Contents to a document which has been prepared to receive it. No changes should be made to document in meantime.

Parameters

  in_signature | The signature Contents to write
  in_signature_size | the size of the signature buffer
  in_field | The signature field to which to write
  out_stream | The output stream where to write data.

Exceptions

  - | if there is a problem during Save an Exception object will be thrown.

## ◆ SaveViewerOptimized() [1/3]

void pdftron::PDF::PDFDoc::SaveViewerOptimized | ( | const char *& | out_buf,
|  | size_t & | out_buf_size,
|  | const ViewerOptimizedOptions & | opts )

Applies optimizations to improve viewing speed and saves the document to a memory buffer. The main optimizations used are linearization and embedding thumbnails for the first page and any other pages that are slow to render.

Parameters

  out_buf | a 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_size | the size of the serialized document (i.e. out_buf) in bytes.
  opts | - The optimization options

Exceptions

  - | if the file can't be opened for saving or if there is a problem during Save an Exception object will be thrown.

## ◆ SaveViewerOptimized() [2/3]

void pdftron::PDF::PDFDoc::SaveViewerOptimized | ( | const UString & | path,
|  | const ViewerOptimizedOptions & | opts )

Applies optimizations to improve viewing speed and saves the document to the specified file. The main optimizations used are linearization and embedding thumbnails for the first page and any complex pages.

Parameters

  path | The full path name to which the file is saved.
  opts | The optimization options

Exceptions

  if | the file can't be opened for saving or if there is a problem during Save an Exception object will be thrown.

## ◆ SaveViewerOptimized() [3/3]

std::vector< unsigned char > pdftron::PDF::PDFDoc::SaveViewerOptimized | ( | const ViewerOptimizedOptions & | opts | ) |

## ◆ SetOpenAction()

void pdftron::PDF::PDFDoc::SetOpenAction | ( | const Action & | action | ) |

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

Parameters

  action | A 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.

## ◆ SetPageLabel()

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_num | The 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.

## ◆ SetSecurityHandler()

void pdftron::PDF::PDFDoc::SetSecurityHandler | ( | const SDF::SecurityHandler & | handler | ) |

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

Parameters

  handler | new 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.

## ◆ TryLock()

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.

## ◆ TryLockRead()

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

  milliseconds | duration to obtain a read lock for.

Returns
  true if the document is locked for multi-threaded access, false otherwise.

## ◆ Unlock()

void pdftron::PDF::PDFDoc::Unlock | ( |  | ) |

Removes the lock from the document.

## ◆ UnlockRead()

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

Removes the read lock from the document.

## ◆ VerifySignedDigitalSignatures()

SignaturesVerificationStatus pdftron::PDF::PDFDoc::VerifySignedDigitalSignatures | ( | const VerificationOptions & | in_opts | ) | const

Attempts to verify all signed cryptographic digital signatures in the document, ignoring unsigned signatures.

Returns
  an enumeration value representing the state of the document's signatures

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

- PDF/PDFDoc.h