Previous Next


                                         111
SECTION 3.4                                                             File Structure



• In any array that is visible, every element is visible.
• Resource dictionaries in content streams are visible. Although a resource dic-
  tionary is not required, strictly speaking, the content stream to which it is at-
  tached is assumed to contain references to the resources.

In general, the objects that may be hidden are optional objects specified by
indirect references. A PDF 1.5 consumer can resolve those references by
processing the cross-reference streams. In a PDF 1.4 consumer, the objects
appear to be free, and the references are treated as references to the null object.

For example, the Outlines entry in the catalog dictionary is optional. Therefore,
its value may be an indirect reference to a hidden object. A PDF 1.4 consumer
treats it as a reference to the null object, which is equivalent to having omitted the
entry entirely; a PDF 1.5 consumer recognizes it. However, if the value of the
Outlines entry is an indirect reference to a visible object, the entire outline tree
must be visible because nodes in the outline tree contain required pointers to
other nodes.

Following this logic, items that must be visible include the entire page tree, fonts,
font descriptors, and width tables. Objects that may be hidden in a hybrid-
reference file include the structure tree, the outline tree, article threads,
annotations, destinations, Web Capture information, and page labels,.

Example 3.11 shows a hybrid-reference file containing a main cross-reference
section and an update cross-reference section with an XRefStm entry that points
to a cross-reference stream (object 11), which in turn has references to an object
stream (object 2).

In this example, the catalog (object 1) contains an indirect reference (3 0 R) to the
root of the structure tree. The search for the object starts at the update cross-
reference table, which has no objects in it. The search proceeds depending on the
version of the consumer application:
• In a PDF 1.4 consumer, the search continues by following the Prev pointer to
  the main cross-reference table. That table defines object 3 as a free object,
  which is treated as the null object. Therefore, the entry is considered missing,
  and the document has no structure tree.
• In a PDF 1.5 consumer, the search continues by following the XRefStm pointer
  to the cross-reference stream (object 11). It defines object 3 as a compressed
  object, stored at index 0 in the object stream (2 0 obj). Therefore, the document
  has a structure tree.

Previous Next