The printing process is divided into three groups of steps:
These groups of broad steps include the following specific actions, represented in Figure 14.13.
Figure 14.13 Print Process
The steps depicted in Figure 14.13 include the following:
A user sends a print job from an application. The application calls the Graphics Device Interface (GDI). If print output is produced in RAW format, the GDI is not used.
The GDI calls the printer driver for information, which the GDI uses to create a job in printer language.
The GDI delivers the job to the spooler.
The client side of the spooler (Winspool.drv) makes an RPC call to the server side spooler (Spoolsv.exe).
Spoolsv.exe calls the print router (Spoolss.dll).
The router (Spoolsv.dll) sends the print job to the local print provider (LPP) or remote print server if the job is being sent to a network printer.
The LPP polls print processors to find one that can handle the data type of the job.
The LPP sends the job to the print processor, which modifies the job as required to make it print properly.
The print processor sends the job to the page separator. A separator page is added, as required.
The job is sent to the appropriate port print monitor. If print is bidirectional, the job is first sent to the language monitor such as the Printer Job Language (PJL) monitor, and then sent on to the port monitor. If the job is unidirectional, the job is sent directly to the port monitor.
The printer translates the print language into a bitmap, which it then prints.