What Is the Document Structuring Convention?
The DSC is a special file format for PostScript documents. The full
details for the DSC can (and should) be gotten from Adobe. If you are
writing a PostScript printer driver or other utility which will be
used by a large number of people to create or manipulate PostScript
documents, do not even think about writing it without making it
DSC-compliant. You will save yourself and your users a lot of
headaches.
Although the full DSC is beyond the scope of this guide, the most basic rules can be explained. A DSC-compliant document is an ordinary PostScript document with a number of comments added. These comments provide information to any postprocessors which work with the files. Some comments strictly provide information, others are used to structure the document into sections, which may be shuffled or processed in other ways by the postprocessor.
Every DSC-compliant document is indicated by having the comment
%!PS-Adobe 3.0
as the first line. This comment is a flag to
indicate that the document is compliant. You should never use this comment
unless your document really is DSC compliant.
There are many other parts to proper DSC. A document which follows the
DSC can be manipulated in many ways. In particular, postprocessors can
shuffle the pages, print two or more pages on a side, and so on. The
printer drivers from some notable companies do not follow the DSC, and
their PostScript documents are, therefore, impossible to work with
once they've been generated.
Now, What About EPS?
An EPS file is a PostScript file which follows the DSC and which follows a
couple of other rules. These rules can be summarized as follows:
%!PS-Adobe EPSF-3.0
%%Pages
comment must have a value of 0 or 1).The BoundingBox comment is used in DSC to indicate where the actual image
will be on a page. The comment describes a rectangle which completely encloses
the image. The form of the comment is:
%%BoundingBox: llx lly urx ury.
For instance, suppose I have an image which extends from x=72
to x=144 and from y=150 to y=170. The BoundingBox
comment in the document should then be:
%%BoundingBox: 72 150 144 170
.