Print Processors

Figure 6.7 The Print Processor Component

Print processors are the components that make necessary alterations to print jobs, based on the data type of the print job. A print processor might recognize only one data type, or it might recognize several data types. Windows NT supplies two print processors, the Windows print processor (WINPRINT.DLL) and the Macintosh print processor (SFMPSPRT.DLL). Third party software vendors may create their own print processors to support custom data types.

Windows Print Processor

The RAW data type indicates that the print job has already been fully rendered, and it does not need any more processing. Most Windows NT printing clients send RAW jobs.

The RAW [FF Auto] and RAW [FF Appended] data types are similar to the RAW data type, but work around one additional problem, as follows.

Many character-mode applications don't send printer-specific commands in their print jobs. Instead, they simply send a stream of ASCII text. This is what happens, for instance, when you copy a text file directly to your computer's parallel port.

Printer languages expect print jobs to contain control commands, but many languages (such as PCL and most dot-matrix printer languages) make an exception when they receive ASCII text without control commands: they feed paper from the default paper source and print the incoming text in the default font with default margins, orientation, and duplexing.

This can cause problems with PCL laser print devices, which only eject a page when one of the following conditions occurs:

The character-mode applications described above rarely send a form feed at the end of their jobs, so the last page of these jobs does not eject from the printer until a human operator forces it, or the next job forces the last page out. The RAW [FF Auto] and RAW [FF Appended] data types work around this problem.

If you configure the default data type in Print Manager to be RAW [FF Auto], the print processor assumes the print job is simple text, and adds a form feed to the end of the job. The print processor leaves the rest of the job alone, and then gives control back to the print provider. The RAW [FF Appended] option is similar, but it first looks for a form feed at the end of the job. If it finds one, it does not append another form feed.

The RAW [FF Auto] and RAW [FF Appended] data types work well with printers whose languages accept ASCII text, but if your printer's language requires control commands, then the RAW data types will not produce good output. The PostScript language is a good example. If you send a PostScript device an ASCII text print job, it ignores the job, or prints error messages. The TEXT data type is the solution. If you configure the default data type to be TEXT, the Windows NT print processor sends the incoming job to the graphics engine. The graphics engine returns a print job which, when sent to the print device, prints the original text using the print device's default paper source, with the default font, orientation, margins, and duplexing. This achieves the same result as saving the incoming job to a file, opening that file with Notepad, and then printing the job.

Note If you send a print job that already contains printer commands to a printer whose default data type is TEXT, the best you can hope for is a printout of the control commands. In most cases, the device prints meaningless garbage.

The journal data type (NT JNL 1.000) implies that the job was created by a Windows-based application running on this computer, and that the data in the job is not yet fully rendered. When the application originally sent the print job, the graphics engine partially rendered the job into DDI commands, and then gave control back to the application. From the user's perspective, the print job had completed, and the user could continue using the application. In the background, the router and print provider passed control to the Windows NT print processor. At this point, the Windows NT print processor calls the graphics engine again, requesting that it continue rendering the job from DDI commands into printer commands. Jobs that are first rendered to journal files and later fully rendered by the print processor rarely take longer to begin printing on the print device, and the time savings to the user can be substantial, especially on long, complex jobs.

Macintosh Print Processor

If you have installed Services for Macintosh on a Windows NT Server computer, then you have an additional print processor (SFMPSPRT.DLL), which can interpret the PSCRIPT1 data type. This data type lets Windows NT Server convert a Macintosh client's PostScript print job into other printers' languages.

When a Macintosh client sends a print job to a Windows NT Server print server, the Macintosh print server component, SFMPRINT.DLL, receives the job and checks the targeted printer. If the printer controls a PostScript print device, then SFMPRINT assigns the job the RAW data type, so that the print provider and print processor will pass the print job through to the print device without alteration. However, if the printer controls a non-PostScript print device, SFMPRINT receives the job and assigns the PSCRIPT1 data type. SFMPSPRT has a built-in TrueImage raster image processor (RIP) which reads and interprets the PostScript code and creates bitmaps of each page that the job would have produced on a PostScript print device. SFMPSPRT then sends these bitmaps to the graphics engine to create a print job that produces those bitmaps on the non-PostScript print device.

Note that the RIP produces monochrome bitmaps at 300 DPI, using the fonts available on the Windows NT-based computer. Because of these limitations in the RIP, the bitmaps print at 300 DPI even if the non-PostScript print device and its printer driver support higher resolutions; the bitmaps print in monochrome even if the print device and the printer driver support color.