PTNameTree
@interface PTNameTree : NSObject
A NameTree is a common data structure in PDF. See section 3.8.5 ‘Name Trees’ in PDF Reference Manual for more details.
A name tree serves a similar purpose to a dictionary - associating keys and values - but by different means. NameTrees allow efficient storage of very large association collections (string/Obj* maps). A NameTree can have many more entries than a SDF/Cos dictionary can.
NameTree-s use SDF/Cos-style strings (not null-terminated C strings), which may use Unicode encoding etc.
PDFDoc doc("../Data/PDFReference.pdf");
NameTree dests = NameTree::Find(*doc.GetSDFDoc(), "Dests");
if (dests.IsValid()) {
// Traversing the NameTree
UString key;
for (DictIterator i = dests.GetIterator(); i.HasNext(); i.Next())
i.Key().GetAsPDFText(key); // ...
}
-
Retrieves the NameTree inside the ‘/Root/Names’ dictionary with the specified key name, or creates it if it does not exist.
Note
although it is possible to create a name tree anywhere in the document the convention is that all trees are located under ‘/Root/Names’ dictionary.
Declaration
Objective-C
+ (PTNameTree *)Create:(PTSDFDoc *)doc name:(NSString *)name;Swift
class func create(_ doc: PTSDFDoc!, name: String!) -> PTNameTree!Parameters
doc- The document in which the name tree is created.
name- The name of the NameTree to create.
Return Value
The newly created NameTree for the doc or an existing tree with the same key name.
-
Retrieves a name tree, with the given key name, from the ‘/Root/Names’ dictionary of the doc.
Declaration
Objective-C
+ (PTNameTree *)Find:(PTSDFDoc *)doc name:(NSString *)name;Swift
class func find(_ doc: PTSDFDoc!, name: String!) -> PTNameTree!Parameters
doc- The document in which to search for the name.
name- The name of the name tree to find.
Return Value
The requested NameTree. If the requested NameTree exists NameTree.IsValid() will return true, and false otherwise.
-
Declaration
Objective-C
- (BOOL)IsValid;Swift
func isValid() -> BoolReturn Value
whether this is a valid (non-null) NameTree. If the function returns false the underlying SDF/Cos object is null and the NameTree object should be treated as null as well.
-
Undocumented
Declaration
Objective-C
- (PTDictIterator*)GetNameIteratorWithKey: (NSData*)key key_sz: (int)key_sz;Swift
func getNameIterator(withKey key: Data!, key_sz: Int32) -> PTDictIterator! -
Search for the specified key in the NameTree.
DictIterator i = dests.Find("MyKey", 5); if (i.HasNext()) { UString key; i.GetKey().GetAsPDFText(key); // ... cout << "Value: " << i.GetValue().GetType() << endl; }Declaration
Objective-C
- (PTDictIterator *)GetIterator;Swift
func getIterator() -> PTDictIterator!Parameters
keydata buffer representing the key to be found.
key_szThe size (in bytes) of the key.
Return Value
If the key is present the function returns a NameTreeIterator the points to the given Key/Value pair. If the key is not found the function returns End() (a non-valid) iterator.
-
Search the NameTree for a given key.
Declaration
Objective-C
- (PTObj *)GetValue:(NSData *)key key_sz:(int)key_sz;Swift
func getValue(_ key: Data!, key_sz: Int32) -> PTObj!Parameters
key- a key to search for in the dictionary
key_sz- the buffer size used to store the key.
Return Value
null if the tree does not contain the specified key, otherwise return the corresponding value.
-
Puts a new entry in the name tree. If an entry with this key is already in the tree, it is replaced.
Declaration
Objective-C
- (void)Put:(NSData *)key key_sz:(int)key_sz value:(PTObj *)value;Swift
func put(_ key: Data!, key_sz: Int32, value: PTObj!)Parameters
keydata buffer representing the key of the new entry.
key_szThe size (in bytes) of the key.
valuethe value associated with the key. It can be any SDF::Obj.
-
Removes the specified object from the tree. Does nothing if no object with that name exists.
Declaration
Objective-C
- (void)EraseNameTreeEntryWithKey:(NSData *)key key_sz:(int)key_sz;Swift
func eraseNameTreeEntry(withKey key: Data!, key_sz: Int32)Parameters
keydata buffer representing the key of the entry to be removed.
key_szThe size (in bytes) of the key.
-
Removes the NameTree entry pointed by the iterator.
Declaration
Objective-C
- (void)EraseNameTreeEntryWithPos:(PTDictIterator *)pos;Swift
func eraseNameTreeEntry(withPos pos: PTDictIterator!)Parameters
posditionary iterator object that points to the NameTree entry to be removed.
PTNameTree Class Reference