Focus on PostScript

What is PostScript?

PostScript, at its essence, is a programming language, whose purpose is to lay out information on a page. It is generically referred to as a Page Description Language (PDL). PostScript originated around the time that the Macintosh was introduced, with the first laser printer (Apple LaserWriter) for ordinary people. The original orientation of PostScript was to put lines of text onto a printed page, using sophisticated font technology for smooth text and professional looking output — a dramatic departure from the crude dot matrix printing which prevailed at the time.

PostScript evolved to use increasingly more sophisticated font technologies, image encodings, encryption, and more. There are other PDLs, where HP's PCL is the one prominent alternative to PostScript; but PCL essentially self-destructed when HP incompatibly re-engineered it in PCL 6. You will seldom encounter print jobs in PCL form.

What is PostScript not?

Most importantly, PostScript is not a document technology. PostScript addresses one page at a time, and doesn't address the document as a whole. PostScript evolution brought about Document Structuring Conventions, but as suggestive comments in the job rather than actual instructions. Adobe later came up with Portable Document Format (PDF) technology to finally treat documents as a whole.

PostScript does not in any way address communication with the printer. A PostScript job is in some way introduced into a printer, by ethernet communication, FTP, USB stick, or other means, and then the printer processes it. PostScript does not define any means for communication back to the submitting host as to issues with printing (paper jams, out of paper, etc.). It is very important to appreciate that, in PostScript printing, you send the job in its entirety to the printer, and hope for the best. HP, as a printing vendor, found this arrangement rather primitive and came up with its own supplemental thing called Printer Job Language, whereby the host would send preliminary meta instructions (akin to IBM mainframe Job Control Language) to tell an HP printer how to handle the job, overall. PJL includes minimalist bi-directional communication, where the printer will send an indication back to a waiting host when the printer finishes each page, and then the whole job. But, still, there is no communication during the processing of a page: the waiting host has no idea what's going on. Because of this looseness, there is a conventional timeout period where the host waits for some word back from the printer, and then gives up: the host may then resubmit the job to the printer. However, it may be the case that the printer is taking a long time to process the PostScript to render a page: it may finally finish that page, and then go on to complete the rest of the job. But then it finds another instance of the same job, and the same sequence happens all over again, where an infinite number of copies of the job will print until some human notices what's going on and stops it. IPDS printing technology is much superior, where there is intimate communication between the host and printer throughout the printing.

What's processing the PostScript in the printer?

Modern printers are essentially computers in their own right, with a large amount of memory, storage space, and a respectable processor. Most of them have a goodly amount of queue space to accept at least one large job in its entirety, and often multiple jobs, which the printer manages in a queue. The essence of a PostScript printer is its PostScript interpreter, which is commonly contained in flash memory. As the interpreter parses the job's PostScript instructions, it stores contained variables and values in "dictionaries".

The PostScript interpreter may have been created by Adobe, the authority in PostScript — or it may have been created by someone else. Adobe charged a hefty licensing fee for its creation, which incited other companies to instead create their own PostScript interpreter versions, to save money. Often, these emulating interpreters are not as good as what Adobe produces, which can result in added delays in page rendering, or mysterious anomalies. This gave Adobe an opportunity to feature "genuine Adobe PostScript" on printers which licensed "the real thing".

How is PostScript evolving?

Simply put, PostScript is not evolving: its development stopped with PostScript level 3. Adobe is evolving PDF technology instead. PostScript remains the most heavily used print job format, and will likely continue to be dominant for many years.

Advice on PostScript printing

When going to print a job, be sure that either the PostScript job itself or the print server (via PJL options) specifies the parameters governing how the job should be printed, else whatever defaults are present in the printer will control the printing. This can result in mysteriously incorrect output. An example from my experience> In some testing, I submitted a basic test job through a print server to a PostScript printer. The job was a 1-page image. Rather then coming out filling a portrait page, the image came out small, over the the left side of a landscape oriented page. In pursuing this, I found that the factory defaults for the printer were for 3-up printing at 2400 dpi. I changed the printer settings to more normal 1-up and 600 dpi, whereafter the image printed as one would normally expect.
Back to the Printing page