Windows NT Printing
Windows uses one driver to support printing for all applications. Operating systems of the past required each application to support printing independently which required a print driver for each application or print functionality built into each application.
- Printer - In Windows, it refers to the printer driver software which interacts with the print device to be sure the print job is formatted for that print device. Provides the interface to view and modify print jobs. This is also known as the print queue.
- Print device - The device that physically prints on paper.
- Print job - The print job is the request to print.
- EMF - Extended metafile format is a journal file print job.
When a shared print device made available as a remote printer, the printer is actually shared, not the print device. Therefore, one print device may have several printers associated with it. This allows various priorities and characteristics to be set up for different users on the same print device.
Windows NT Print Model
- GDI - Graphics Device Interface provides a single system for presenting graphic information to the user through the monitor and it translates print requests into driver requests that match the printing characteristics of the print device called device driver interface (DDI) calls. The printer is considered to be a graphic device with higher resolution and less color than the monitor. One of the following outputs is produced when the print request is made:
- Raw print job - Instructions the printer can use to produce the printed document.
- Journal file print job - A list of DDI calls that can produce a raw print job. Produced when the printing device is local.
- Print driver - Translates DDI calls into commands for the specific print device and consists of:
- Printer Graphics driver - Does the DDI which applications use to print device language conversion. NT includes PLOTTER.DLL, PSCRIPT.DLL, and RASDD.DLL for HPGL/2, PostScript, and raster printers respectively.
- Printer interface driver - Provides the interface used to configure the printer and manage print jobs. NT includes PLOTUI.DLL, PSCRIPTUI.DLL, and RASDDUI.DLL for HPGL/2, PostScript, and raster printers respectively.
- Minidriver or Characterization Data file - Contains information about printer device for the printer graphics driver. It includes internal cartridge information, Available paper trays and amount of print device memory.
- Print router - Directs the print job to the correct print spooler providing the print service. The router can download the print driver from the remote computer.
- Print spooler or provider - Accepts print jobs from the router for a local or remote printer, uses the print processor to make required modifications to the print job, and sends print jobs one at a time to the print monitor. Separator pages are added here. It assigns priority to the jobs. Print job files are spooled to the WINNT40\SYSTEM32\ SPOOL\PRINTERS directory by default. It is a service and can be controlled by the services applet in the control panel.
- Print processor - Processes DDI calls into printer instructions. It modifies the print job before it is sent to the print monitor and may append form feeds. The default processor is WINPRINT.DLL. Also a Macintosh print processor is provided. The print processor recognizes simple text, postscript, raw printer data, and enhanced metafile (EMF) data which can be used with any print device. The two types of processed RAW jobs are "Raw FF auto" and "Raw FF Appended" The "Raw FF auto" job always appends a form feed, even if one is already present, and the "Raw FF appended" type only appends a form feed if one is not already present..
- Print monitor - Transmits the print job to the print device and reports the condition of the print device. Print monitors include:
- LOCALMON.DLL can store the print job in a file and communicates to the print device over serial or parallel ports, named pipes or remote shares.
- HPMON.DLL for print jobs on an HP printer on the network.
- LPRMON.DLL for UNIX line printer daemon print servers.
- LEXMON.DLL for Lexmark Mark Vision print devices which use DLC, TCP/IP, or IPX for their transport protocol to communicate.
- PJLMON.DLL for bi-directional print devices using the Printer Job Language (PJL) standard. The HP LaserJet 5Si uses this standard.
- Network printing device
Two additional utilities called LPR.EXE and LPQ.EXE are provided on Windows NT for managing print jobs destined for Unix hosted printers. LPR is used to print files and LPQ is used to manage the print queue.
NT remote print drivers
Clients that are attempting to print on remote computers do not need a local print driver installed. When the print request is made to the print server computer, the client will check to see if a print driver exists. If not or its print driver is older than the print driver on the server, the print server sends a copy of its print driver to the client computer which keeps it until the session ends.
When print requests are made to a print device that is available through a print server the following happens:
- If the requesting computer does not have a print driver for the print device or it's print driver is older than the print driver on the print server, it will receive a copy of the print driver from the print server.
- A journal file (List of DDI calls) is produced by the Graphics Device Interface (GDI) of the client computer.
- The journal file is sent to the print spooler component on the local computer.
- The local print spooler component connects to the print spooler on the print server and sends the journal file.
- The journal file is converted to a RAW print file by the print processor for the specific print device the print job is being sent to. The RAW file is a file converted from DDI commands to commands specific for the print device the job is being sent to. A separator page is attached if it was requested.
- The print job is sent specific print monitor for the given print device. It will complete the process of sending the job to the print device and monitor the progress of the job.
- The print device will print the print job.
The Add Printer Wizard is used to create or add new printers (print drivers). The Add Printer Wizard may be started by selecting, "Start", "Settings", and "Printers" or by selecting "Printers" in "My Computer". Printer drivers that support other operating systems such as Windows 95 may be installed on the computer that is hosting the printer. This way if a client computer with that operating system tries to use the print device and does not have a print driver, it can still print since the print driver will be available from the print server.
Printer Properties window tabs:
- General - A printer comment (textbox) can be added, printer location may be described (textbox), the print driver selection may be made (dropdown box/NewDriver button), placement of separator pages (button) is selected, the print processor is selected (button), and a test page (button)may be printed. Available separator pages are in the WINNT40\SYSTEM32 directory and are:
Separator pages are text files and may be created with any editor. Some separator page control characters are:
- SYSPRINT.SEP - This page is compatible with PostScript print devices and will print a page at the start of each document.
- PCL.SEP - Sets PCL mode for HP print devices and prints a page at the start of each document.
- PSCRIPT.SEP - Makes HP print devices switch to PostScript mode. A page is not printed before the print document.
- \D - Date
- \H - Followed by a specific control sequence for the print device will perform a specific control on the printer.
- \N - User name that sent the print job.
- \T - Time
- Ports - Multiple print devices that are in the same print pool may be added (Print pooling is enabled here). A print job may be redirected to a file. Also a printer may be redirected to another print device so long as the other device is of the same type.
- Scheduling - Controls print priority (1-99), when printing starts relative to spooling or whether to spool at all, hours of availability for the print device. Spooling Options include the default selection of "Spool Print Documents", causes the job spool to the hard drive allowing the application to return faster. The two sub options to "Spool Print Documents" are "Start Printing Immediately" and "Start Printing After Last Page Is Spooled". Another option is "Print Directly to the Printer" that does not allow spooling of the print job. Checkboxes include whether the spooler should hold mismatched jobs, whether to print spooled jobs first, and whether to "Keep documents after they have printed". Scheduling priority can be set from 1 to 99 with 99 being the highest priority. To make scheduling priority effective, more than one printer driver with different priorities may be associated with one print device. This tab also controls hours of operation for the printer.
- Sharing - Allows other stations to use the printer. The print server can be configured here to download print drivers to other computers that access your printer. Windows NT 4.0 printer permissions:
- No Access - The group or user with no access will not be able to use the printer.
- Print Permission - Users may send print jobs to the printer and manage their print jobs by using the delete, pause, resume, and restart functions on their own print jobs.
- Manage Documents - Allows the user or group with this permission to manage jobs sent by other users or groups.
- Full control - The user or group with this permission may change printer permissions, delete or add printers, enable and disable sharing, and change other print settings.
- Security - Permissions, auditing, and ownership. Permissions:
Auditing Success or failure of:
- Full Control
- Manage Documents
- No Access
- Full control
- Change Permissions
- Take Ownership
- Device Settings - Sets up device specific settings such as printer fonts, default tray, and available printer memory.
Multiple print devices may support one printer (driver) with a print pool. Print jobs are sent to the next available print device. All print devices must be of the same type, however, since the printer (driver) must be able to interface to all print devices in the print pool. Windows for workgroups (WFW) cannot spool to an NT printer pool, but Windows 95 through NT4.0 can.
Managing print jobs
Print jobs are managed by double clicking on the desired printer in the printers folder. Menus include:
- Document - Print jobs may be paused (pause), resumed (resume), restarted(restart), or canceled (cancel).
- Printer - Capabilities include:
- The printer may be paused (Pause Printing)
- Sharing and permissions may be changed
- The default printer may be changed
- Defaults for all print jobs may be set
- Printer properties may be set
- Spooler documents may be deleted
Printer registry entries
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers - To change the location of the spool folder for all printers, change the value of DefaultSpoolDirectory to reflect the new spool location. This affects all printers installed on the computer. You can also change the spool location of each of the printers installed on the computer individually by modifying the SpoolDirectory value of their key entry.
Two troubleshooting tips
- Remember that the computer spooling the print job must have sufficient space to queue the print job.
- To test, you can print to a file. If you copy the file to the printer port and it prints, either the print spooler is not working or the data is not being transmitted to the printer.