This blog is mainly a entry/introduction to the print system, one is the Documetn and Printing System, which most windows application might interact with; the other is Printer Device/Spooler system where devices and settings information are concerned.
Document and printing
Document and Printing are more focused on the front-end of the native windows program, which may request services of printing to get documents/images printed.
You can find the doc on the Document printing in this page - printing;
The following shows the high-level view of how different APIs are related.
The documents and Printing topics has several sub-topics. they are
Technology | Description |
---|---|
Provides an interface to the print spooler that applications can use to send XPS documents to a printer. Native Windows applications that create XPS documents, such as by using the XPS Document API, can use the XPS Print API to send the XPS documents to a printer. Using the XPS Print API, applications can print to printers that use GDI printer drivers or XPSDrv printer drivers. | |
Provides an interface to the print spooler so that applications can manage printers and print jobs. Applications use the Print Spooler API to start, stop, control, and configure print jobs managed by the print spooler whether they use the XPS Print API or the GDI Print API to print the content. | |
Provides applications with functions to manage and convert print tickets. | |
Provides applications with a device-independent printing interface. Note Developers who are writing applications for Windows Vista and later versions of Windows should consider using the XPS Document API and the XPS Print API in their application. The GDI Print API is suitable for applications that must run on Windows XP and earlier versions of Windows. |
Print System
Print System is more concerned about the System, on the Spooler and Printer Device.
You may find more docs from microsoft on this page - Introduction to Printing
The print system has two major parts.
- The spooler
- The Printer Driver
You can find the respective architecture description in the following list.
In the XPS print path, available with Windows Vista and Windows 7, printer drivers are based on the XML Paper Specification (XPS). When a Microsoft Win32 XPS application prints, the application calls XPS functions in the XPS Print API. When it prints to queues with XPSDrv printer drivers, the spooler passes the XPS spool file straight to the device for rendering and output. When the XPS file is printed to a GDI device, it is converted to an EMF file through the XPS to GDI Conversion Module. It is then sent through the GDI print path in a manner similar to Win32 GDI applications.
So in my understanding, the flow is like this
Spooler
Accoring to the architeture from Print Spooler Architecture page.
I got the following picture
Print Driver
From the description on Printer Driver Architecture I got this picture
Glossary/Acronyms
MEF: Enhanced Metafile