SECTION 4.7
333
External Objects
4.7.1 PostScript XObjects
Beginning with PDF 1.1, a content stream can include PostScript language frag-
ments. These fragments are used only when printing to a PostScript output de-
vice; they have no effect either when viewing the document on-screen or when
printing it to a non-PostScript device. In addition, applications that understand
PDF are unlikely to be able to interpret the PostScript fragments. Hence, this ca-
pability should be used with extreme caution and only if there is no other way to
achieve the same result. Inappropriate use of PostScript XObjects can cause PDF
files to print incorrectly.
Note:
Since PDF 1.4 encompasses all of the Adobe imaging model features of the
PostScript language, there is no longer any reason to use PostScript XObjects. This
feature is likely to be removed from PDF in a future version.
A
PostScript XObject
is an XObject stream whose
Subtype
entry has the value
PS
.
A PostScript XObject dictionary can contain the entries shown in Table 4.38 in
addition to the usual entries common to all streams (see Table 3.4 on page 62).
TABLE 4.38 Additional entries specific to a PostScript XObject dictionary
KEY
TYPE
VALUE
Type
name
name
(Optional)
The type of PDF object that this dictionary describes; if present, must be
XObject
for a PostScript XObject.
(Required)
The type of XObject that this dictionary describes; must be
PS
for a Post-
Script XObject.
Note:
Alternatively, the value of this entry may be
Form
, with an additional
Subtype2
entry whose value is
PS
.
Subtype
Level1
stream
(Optional)
A stream whose contents are to be used in place of the PostScript
XObject’s stream when the target PostScript interpreter is known to support only
LanguageLevel 1.
When a PDF content stream is translated into the PostScript language, any
Do
operation that references a PostScript XObject is replaced by the contents of the
XObject stream itself. The stream is copied without interpretation. The PostScript
fragment may use Type 1 and TrueType fonts listed in the
Font
subdictionary of
the current resource dictionary (see Section 3.7.2, “Resource Dictionaries”), ac-
cessing them by their
BaseFont
names using the PostScript
findfont
operator. The
fragment may not use other types of fonts listed in the
Font
subdictionary. It