[mod.computers.laser-printers] PostScript: persisting across jobs

greid@adobe.UUCP (Glenn Reid) (11/05/86)

> >Alas: Does anyone know how to define fonts/symbols on the
> >LaswerWriter(+), so the definitions won't be lost at the end of the job.

> In order that your definitions are remebered across jobs you must create
> them within a dictionary and then use them in the same dictionary e.g.
>
> /mydict 5 dict def % defines a dictionary called mydict with 5 definitions
> mydict begin
> % create definitions here
> end

This is, unfortunately, not true.  A PostScript printer has what is
called a "server loop", which will completely restore the state of a
printer between jobs.  The only way to cause definitions to persist
across jobs is to make the changes outside the context of this server
loop. There is a PostScript operator called "exitserver" which is
designed for that purpose, and it requires a password (the default
password for most printers is 0, although not for all printers).  All
you need to do to make a prologue or a font persist across jobs is to
put the following line of PostScript at the beginning of the job:

%!
serverdict begin 0 exitserver

where the 0 in this case is the valid exitserver password for this
printer.  Another way to accomplish this which sometimes makes it
easier to change the password is to put the password on the stack first:

%!
0000
serverdict begin exitserver

They have the same effect.

Creating a separate dictionary is frequently a good idea, but in itself
is not enough to allow things to persist between jobs.  Since the
effects of exiting the server loop will be visible to all jobs, it will
help insulate these effects to place them into a user-defined
dictionary, as mentioned.

Glenn Reid
Adobe Systems