打印票证与 Win 32 应用程序的兼容性

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

在基于 Microsoft Win32 的应用程序和基于 GDI 的打印驱动程序中使用打印票证时,必须考虑以下兼容性方案:

要打印到 XPSDrv 打印驱动程序的基于 Win32 的应用程序
当不知道打印票证文档的基于 Win32 的应用程序打印到 XPSDrv 打印驱动程序时,GDI 到 XPS 转换模块将根据基于 Win32 的应用程序发出的 DDI 调用创建 XPS 后台处理文件。 Windows Vista 打印支持还会创建根据基于 Win32 的应用程序使用的 DEVMODE 结构的打印票证,并将其插入为文档创建的 XPS 后台处理文件中。 GDI 到 XPS 转换只能转换 DEVMODE 结构的公共部分。 该转换会使用相应的 XML 二进制编码将专用 DEVMODE 作为二进制大型对象 (BLOB) 嵌入到打印票证中。 可以从 DEVMODEW 到打印票证转换中的打印票证将二进制 BLOB 还原到 DEVMODEW 结构的专用部分。

对于 XPSDrv 打印驱动程序,从基于 Win32 的应用程序发送的文档与从 Windows Presentation Foundation (WPF) 应用程序发送的文档并没有什么不同,因为这两个文档都以 XPS 后台处理文件格式进行后台处理。

要打印到基于 GDI 的打印驱动程序的 WPF 应用程序
当 WPF 应用程序将包含打印票证的文档打印到不支持打印票证的基于 GDI 的打印驱动程序时,Windows Vista 打印支持会转换 WPF 应用程序传递给 EMF 文件的 XPS 文档,并将每个打印票证转换为 DEVMODE 结构。

对于 GDI 打印驱动程序,来自 WPF 应用程序的打印作业与 Win32 应用程序发送的打印作业并没有什么不同。