Foxit PDF SDK
foxit::pdf::objects::PDFNumberTree Class Reference
Inheritance diagram for foxit::pdf::objects::PDFNumberTree:
foxit::Base

Public Types

enum  Type { e_PageLabels = 1 }
 Enumeration for number tree type. More...
 

Public Member Functions

 PDFNumberTree (const PDFDoc &document, Type type)
 Constructor, with parameters. More...
 
 PDFNumberTree ()
 Constructor.
 
 PDFNumberTree (const PDFNumberTree &other)
 Constructor, with another PDF number tree object. More...
 
 ~PDFNumberTree ()
 Destructor.
 
objects::PDFObjectGetObj (int number)
 Get the value (as PDF object) of a specified key integer. More...
 
Type GetType ()
 Get the type of current number tree. More...
 
bool HasNumber (int number)
 Check if the specified key integer exists in current number tree. More...
 
bool IsEmpty () const
 Check whether current object is empty or not. More...
 
bool operator!= (const PDFNumberTree &other) const
 Not equal operator. More...
 
PDFNumberTreeoperator= (const PDFNumberTree &other)
 Assign operator. More...
 
bool operator== (const PDFNumberTree &other) const
 Equal operator. More...
 
bool RemoveAllObjs ()
 Remove all key integers from current number tree, along with theirs value (as PDF object). More...
 
bool RemoveObj (int number)
 Remove a key integer from current number tree, along with its value (as PDF object). More...
 
bool SetObj (int number, objects::PDFObject *pdf_object)
 Set the value (as PDF object) of a specified key integer. If the key integer does not exist, it will be added to current number tree with the value. More...
 
- Public Member Functions inherited from foxit::Base
FS_HANDLE Handle () const
 Get the handle of current object. More...
 

Detailed Description

Number tree is a kind of common data structure in PDF. A number tree is similar to a number tree, except that keys in a number tree are integers instead of strings and are sorted in ascending numerical order. Number tree has following characteristics:

  • key integers in a number tree are sorted in ascending numerical order and each key integer in the same number tree is unique;
  • values associated with the key integers may be objects of any type, depending on the purpose of the number tree;
  • number tree can represent an arbitrarily large collection of key-value pairs, which can be looked up efficiently without requiring the entire data structure to be read from the PDF file.

Class PDFNumberTree is used to be associated with an existing number tree with specified type or create one. It offers functions to get key-value pairs in the number tree, and set/add/remove any key-value pair. Currently, class PDFNumberTree can be associated with following number tree defined in PDF document:

  • Page labels number tree (with type PDFNumberTree::e_PageLabels), which defines the page labeling for the document. The keys in this tree are page indexes; the corresponding values are page label dictionaries (Please refer to <PDF Renferece 1.7> P594 Section 8.3.1, "Page Labels"). Each page index denotes the first page in a labeling range to which the specified page label dictionary applies. The tree must include a value for page index 0.

Member Enumeration Documentation

◆ Type

Enumeration for number tree type.

Values of this enumeration should be used alone.

Enumerator
e_PageLabels 

"PageLabels" number tree.

Constructor & Destructor Documentation

◆ PDFNumberTree() [1/2]

foxit::pdf::objects::PDFNumberTree::PDFNumberTree ( const PDFDoc document,
Type  type 
)

Constructor, with parameters.

If there exists number tree with specified type in the PDF document, this function is just to construct a PDF number tree object to be associated with the number tree. If there is no such number tree in PDF document, the constructed PDF number tree object can be used to create such number tree in PDF document and add items to the number tree.

Parameters
[in]documentA valid PDF document object.
[in]typeThe type of the number tree. Please refer to values starting from PDFNumberTree::e_PageLabels and this should be one of these values.

◆ PDFNumberTree() [2/2]

foxit::pdf::objects::PDFNumberTree::PDFNumberTree ( const PDFNumberTree other)

Constructor, with another PDF number tree object.

Parameters
[in]otherAnother PDF number tree object.

Member Function Documentation

◆ GetObj()

objects::PDFObject* foxit::pdf::objects::PDFNumberTree::GetObj ( int  number)

Get the value (as PDF object) of a specified key integer.

Parameters
[in]numberAn integer as the key.
Returns
A PDFObject object. The type of returned PDF object depends on the purpose of current number tree. Please refer to comment of class PDFNumberTree for more details.

◆ GetType()

Type foxit::pdf::objects::PDFNumberTree::GetType ( )

Get the type of current number tree.

Returns
Type of current number tree. Please refer to values starting from PDFNumberTree::e_PageLabels and this would be one of these values.

◆ HasNumber()

bool foxit::pdf::objects::PDFNumberTree::HasNumber ( int  number)

Check if the specified key integer exists in current number tree.

Parameters
[in]numberAn integer that represents the key to be checked.
Returns
true means the specified integer exists in current number tree, and false means the specified integer does not exist in current number tree.

◆ IsEmpty()

bool foxit::pdf::objects::PDFNumberTree::IsEmpty ( ) const

Check whether current object is empty or not.

When the current object is empty, that means current object is useless.

Returns
true means current object is empty, while false means not.

◆ operator!=()

bool foxit::pdf::objects::PDFNumberTree::operator!= ( const PDFNumberTree other) const

Not equal operator.

Parameters
[in]otherAnother PDF number tree object. This function will check if current object is not equal to this one.
Returns
true means not equal, while false means equal.

◆ operator=()

PDFNumberTree& foxit::pdf::objects::PDFNumberTree::operator= ( const PDFNumberTree other)

Assign operator.

Parameters
[in]otherAnother PDF number tree object, whose value would be assigned to current object.
Returns
Reference to current object itself.

◆ operator==()

bool foxit::pdf::objects::PDFNumberTree::operator== ( const PDFNumberTree other) const

Equal operator.

Parameters
[in]otherAnother PDF number tree object. This function will check if current object is equal to this one.
Returns
true means equal, while false means not equal.

◆ RemoveAllObjs()

bool foxit::pdf::objects::PDFNumberTree::RemoveAllObjs ( )

Remove all key integers from current number tree, along with theirs value (as PDF object).

Returns
true means success, while false means failure.

◆ RemoveObj()

bool foxit::pdf::objects::PDFNumberTree::RemoveObj ( int  number)

Remove a key integer from current number tree, along with its value (as PDF object).

If the input key integer does not exist in current number tree, this function will return true directly.

Parameters
[in]numberAn integer as the key to be removed.
Returns
true means success, while false means failure.

◆ SetObj()

bool foxit::pdf::objects::PDFNumberTree::SetObj ( int  number,
objects::PDFObject pdf_object 
)

Set the value (as PDF object) of a specified key integer. If the key integer does not exist, it will be added to current number tree with the value.

Parameters
[in]numberAn integer as the key.
[in]pdf_objectA PDF object to be set as the key's value. It should not be NULL. The type of this PDF object should match current number tree; otherwise, the input PDF object is invalid. Please refer to comment of class PDFNumberTree for more details.
User should not release this PDF object after this function succeeds.
Returns
true means success, while false means failure.