`

Windows Desktop Document and Printing, and the Printing System

阅读更多

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. 

 

A diagram that shows how a native Windows application can use the print APIs

 

 

The documents and Printing topics has several sub-topics. they are 

 

 

Technology Description

XPS Print API

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.

Print Spooler API

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.

Print Ticket API

Provides applications with functions to manage and convert print tickets.

GDI Print API

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.

 

 

 

Print Spooler Architecture

Printer Driver Architecture

 

 

 

When a Microsoft Win32 GDI application prints, it calls GDI functions in the Win32 API. These functions pass the information to the GDI graphics engine. The GDI graphics engine either spools the drawing instructions as an enhanced metafile (EMF) file or, together with a printer driver, renders a printable image that can be sent to the spooler. Spooler components interpret EMF files, and they can insert page layout information and job control instructions into the data stream. The spooler then sends the data stream to the serial, parallel, or network port driver associated with the target printer's I/O port. In addition, if printing to an XPS device, the GDI print commands are converted through the GDI to XPS conversion component, and the print job is sent down the XPS print path.

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

 

 

 

 

 

  • 大小: 4 KB
  • 大小: 12.3 KB
  • 大小: 13.8 KB
分享到:
评论

相关推荐

    CommonsWare.The.Busy.Coders.Guide.to.Android.Development.Version.8.2.2017

    Printing and Document Generation Dealing with Different Hardware Writing and Using Parcelables Responding to URLs Plugin Patterns PackageManager Tricks Remote Services and the Binding Pattern Advanced...

    jdk-9.0.1_doc-all 最新版

    Defines the Java API for XML Processing (JAXP), the Streaming API for XML (StAX), the Simple API for XML (SAX), and the W3C Document Object Model (DOM) API. java.xml.bind Defines the Java ...

    IEradicator2001

    - Disables System file protection in WindowsMe and Windows2000 (original and sr1) so IE can be removed safely. Win2000sr2 and XP are a little trickier and are NOT supported in this release (system ...

    VB编程资源大全(英文源码 其它)

    A cool simulation for anyone who might think about playing the stocks and spending money and get a general idea how the system works. <END><br>83,LoanExpert.zip A bank loan type project that lets ...

    新编Windows API 参考大全(CHM 中文版)

    3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………...

    windows api大全 chm版

    3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………...

    Qt4.7官方白皮书

    - **Customization, Printing, and Document Export**:提供了定制、打印和导出文档的功能。 #### Web Integration with WebKit - **Native Application Integration**:可以让Qt应用程序与Web内容进行交互。 - **...

    (推荐)Win32 API大全

    3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)……………………...

    如何通过Java打印Word文档

    document.loadFromFile("C:\\Users\\Administrator\\Desktop\\DocoumentToPrint.docx"); //创建PrinterSettings对象 PrinterSettings printerSettings = new PrinterSettings(); //指定物理打印机名称 ...

Global site tag (gtag.js) - Google Analytics