处理打印作业

当后台处理程序准备好将打印作业发送到打印处理器时,它会调用打印处理器的 OpenPrintProcessor 函数。 此函数执行初始化活动并返回句柄。

然后,后台处理程序可以调用 PrintDocumentOnPrintProcessor,它是打印处理器函数,可将数据流从输入格式转换为输出格式,并将转换后的流返回到后台处理程序。

如果输入格式是基于 NT 的操作系统 EMF,PrintDocumentOnPrintProcessor 函数可以使用在 打印处理器中使用 GDI 函数中列出的函数来控制 EMF 记录的播放。 这些函数提供打印处理器和打印机驱动程序之间的接口。 此接口允许打印处理器控制打印机页面的物理布局,从而有助于实现诸如每个物理页打印多个文档页 (“N-up”打印) 、按相反顺序打印页面以及打印每页的多个副本等功能。

打印处理器的输出数据流必须返回到后台处理程序。 通常,如果数据转换需要与打印机驱动程序的 打印机图形 DLL (交互(如 EMF 输入数据) ),则图形 DLL 通过调用 EngWritePrinter 将流返回到后台处理程序。 另一方面,如果转换没有像原始输入数据) 那样调用打印机图形 DLL (,则打印处理器会调用 WritePrinter

从后台处理程序到打印处理器的 ControlPrintProcessor 函数的异步调用可能会中断 PrintDocumentOnPrintProcessor 函数。 此函数实现应用程序暂停、恢复或取消打印作业的功能。

在 PrintDocumentOnPrintProcessor 完成数据流转换并返回后,后台处理程序调用打印处理器的 ClosePrintProcessor 函数。