Previous Next
60
CHAPTER 3 Syntax
a name. For example, in a font dictionary, the value of the Type entry is always
Font, whereas that of the Subtype entry may be Type1, TrueType, or one of
several other values.
The value of the Type entry can almost always be inferred from context. The
operand of the Tf operator, for example, must be a font object; therefore, the Type
entry in a font dictionary serves primarily as documentation and as information
for error checking. The Type entry is not required unless so stated in its
description; however, if the entry is present, it must have the correct value. In
addition, the value of the Type entry in any dictionary, even in private data, must
be either a name defined in this book or a registered name; see Appendix E for
details.
3.2.7 Stream Objects
A stream object, like a string object, is a sequence of bytes. However, a PDF
application can read a stream incrementally, while a string must be read in its
entirety. Furthermore, a stream can be of unlimited length, whereas a string is
subject to an implementation limit. For this reason, objects with potentially large
amounts of data, such as images and page descriptions, are represented as
streams.
Note: As with strings, this section describes only the syntax for writing a stream as a
sequence of bytes. What those bytes represent is determined by the context in which
the stream is referenced.
A stream consists of a dictionary followed by zero or more bytes bracketed
between the keywords stream and endstream:
dictionary
stream
… Zero or more bytes …
endstream
All streams must be indirect objects (see Section 3.2.9, “Indirect Objects”) and
the stream dictionary must be a direct object. The keyword stream that follows
the stream dictionary should be followed by an end-of-line marker consisting of
either a carriage return and a line feed or just a line feed, and not by a carriage
Previous Next