[comp.lang.postscript] Data dictionary and File on LPS20

peram@cs.tamu.edu (Suresh B Peram) (03/05/91)

Hi,

   We have a problem with printing large postscript files
   on our LPS20 heavy duty laser printer.  This particular file
   was generated and sent to the printer directly by a package
   called KMS that we use here.  The document doesn't get printed
   and the printer gives out an error message "Dictionary full".
   The same document gets printed without any problems on other
   smaller laser printer like the 'Apple laser writer'.

   Any suggestions regarding how to solve this problem or
   directions as to where to look for will be greatly
   appreciated.  

   Thanx in advance

Suresh

jj1h+@andrew.cmu.edu (Joseph Jackson) (03/06/91)

After reading some of DEC's PostScript, I've noticed that they are very
good about creating their own dictionary before defining a bunch of new
entries.  This is a good idea for anyone generating PostScript since you
never can be sure how much room is going to be left in the default user
dictionary when your code runs.

On my Apple LaserWriter, the default user dictionary (userdict) has a
maximum size of 200 entries with only 25 things being defined by the
system in an idle state.  DEC's printers may have a smaller userdict or
may have more things already defined in it.  Print this to get the
numbers for your printer:

%!
72 720 moveto
/Times-Roman findfont 14 scalefont setfont
(Max length: ) show 
userdict maxlength 10 string cvs show
(      Current number of entries: ) show
userdict length 10 string cvs show
showpage

Since you're getting a "dictionary full" operator, I'd guess that your
application's PostScript code is doing its work in userdict and that the
LPS20 has less space available there than does a LaserWriter.  If that's
turns out to be the problem, perhaps you can modify your application so
that it emits "200 dictionary begin" and "end" at the correct points to
create and discard the needed work space.

Joe Jackson
Distributed Workstation Services
Carnegie Mellon University

Internet:	jj1h+@andrew.cmu.edu
Bitnet:	jj1h+@ANDREW
AT&Tnet:	(412) 268-8799

woody@chinacat.Unicom.COM (Woody Baker @ Eagle Signal) (03/06/91)

In article <13024@helios.TAMU.EDU>, peram@cs.tamu.edu (Suresh B Peram) writes:
> Hi,
> 
>    We have a problem with printing large postscript files
>    called KMS that we use here.  The document doesn't get printed
>    and the printer gives out an error message "Dictionary full".

I'd look at the output file and check the number of entries in it's
dictionaries.  In addition, I'd load the userdict onto the stack, and then
do a length operation on it to see what it's limits are.  I have encountered
situations with this kind of error, and almost invariably it traces back to
the userdict being full.  CEXEC code, such as in older fonts etc, puts
userdict on the stack first, and within the cexec code, you sometimes
have to work around this.  I'd also look through the file (grep it or
whatever), for all occurances of begin and end, and see what dictionary they
are starting and ending.  I'd then determine the size of those dictionaries.

Cheers
Woody