# Class: NumberTree

## PDFNet. NumberTree

#### new NumberTree()

  A NumberTree is a common data structure in PDF. See section 3.8.6 'Number Trees' in PDF Reference Manual for more details.

  A number tree serves a similar purpose to a dictionary - associating keys and values - but by different means. NumberTrees allow efficient storage of very large association collections (number/Obj* maps). A NumberTree can have many more entries than a SDF/Cos dictionary can.

  Sample code:

        PDFDoc doc("../Data/test.pdf");
        NumberTree labels(doc.GetRoot().Get("PageLabels").Value());
        if (labels.IsValid()) {
          // Traversing the NumberTree
          for (NumberTreeIterator i = labels.GetIterator(); i.HasNext(); i.Next())
              cout << "Key: " << i.Key().GetNumber() << endl;
        }

### Methods

#### <static> create(number_tree)

  Create a high level NumberTree wrapper around an existing SDF/Cos NumberTree. This does not copy the object.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `number_tree` | PDFNet.Obj | SDF/Cos root of the NumberTree object.

  ##### Returns:

  A promise that resolves to an object of type: "NumberTree"

  Type
    PDFNet.NumberTree

#### copy()

  Assignment operator

  ##### Returns:

  A promise that resolves to an object of type: "NumberTree"

  Type
    PDFNet.NumberTree

#### erase(pos)

  Removes the NumberTree entry pointed by the iterator.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `pos` | PDFNet.DictIterator | dictionary iterator object that points to the NumberTree entry to be removed

#### eraseKey(key)

  Removes the specified object from the tree. Does nothing if no object with that number exists.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | number | A number representing the key of the entry to be removed.

#### getIterator(key)

  Search for the specified key in the NumberTree.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | number | the number representing the key to be found. Sample code: NumberTreeIterator i = dests.Find(5); if (i.HasNext()) { cout << "Key: " << i.GetKey()->GetNumber() << endl; cout << "Value: " << i.GetValue()->GetType() << endl; }

  ##### Returns:

  A promise that resolves to if the key is present the function returns a NumberTreeIterator the points to the given Key/Value pair. If the key is not found the function returns End() (a non-valid) iterator.

  Type
    PDFNet.DictIterator

#### getIteratorBegin()

  ##### Returns:

  A promise that resolves to an iterator to the first key/value pair (i.e. NNTreeData) in the document. You can use the Next method on the returned iterator to traverse all entries stored under the NumberTree.

  Sample code: for (NumberTreeIterator i = dests.GetIterator(); i.HasNext(); i.Next()) cout << "Key: " << i.GetKey().GetNumber() << endl;

  Type
    PDFNet.DictIterator

#### getSDFObj()

  ##### Returns:

  A promise that resolves to the object to the underlying SDF/Cos object. If the NumberTree.IsValid() returns false the SDF/Cos object is NULL.

  Type
    PDFNet.Obj

#### getValue(key)

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | number |

  ##### Returns:

  A promise that resolves to an object of type: "Obj"

  Type
    PDFNet.Obj

#### isValid()

  ##### Returns:

  A promise that resolves to whether this is a valid (non-null) NumberTree. If the function returns false the underlying SDF/Cos object is null and the NumberTree object should be treated as null as well.

  Type
    boolean

#### put(key, value)

  Puts a new entry in the name tree. If an entry with this number is already in the tree, it is replaced.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | number | A number representing the key of the new entry.
  `value` | PDFNet.Obj | the value associated with the key. It can be any SDF::Obj.

#### Search results