Chapter 5. Object tree, Stream, Selection and Property editor

The right side of PdfEditor consists of two main parts Object tree and Property editor. It can be further specialized to Selection and Stream windows.

Pdf file consists of objects which form a tree-like structure. There are seven simple objects

  • null

  • boolean

  • integer

  • real

  • string

  • name

  • reference

and three complex

  • array

  • dictionary

  • stream

Object tree displays the tree-like object hierarchy starting at the most important objects and Property editor displays the contents of selected object in human readable form and allows editing the objects in raw form.

There is one important object called content stream which consists of many small operators and their operands. Everything visible on a page is in these content streams. Pdf operators are the objects that contorl what is displayed on a page. The content stream is shown in Stream window in human editable form.

Last tool used to display objects is the Selection window. When some operators are selected using selection modes, those operators are displayed in the Selection window.

Object tree, Stream, Selection and Property editor

Object tree, Stream, Selection and Property editor

The purpose of these windows is to enable complete control over pdf objects and structure of a pdf file. It shows raw pdf objects in user friendly way with the possibility to traverse the objects using the tree like structure, select special category of operators and perform operation on resulting set, see exactly which operators were selected using graphical selection tools. It also allows editing raw objects which mostly requires knowledge of the pdf standard.

We gain complete control over pdf file with this tool. It can be used for advanced editing that almost makes PdfEditor a pdf creator. With the description of operators, object type highlighting and object importance visualization this tool can be also used by normal users for simple but powerful editions. We can add and delete objects almost at will (some top level objects are just for more human readibility and can be neither deleted nor added.)