XPS 筛选器

重要

建议使用 Microsoft 的 IPP 收件箱类驱动程序,以及 Print Support Apps (PSA) ,在 Windows 10 和 11 中自定义打印体验,以便进行打印机设备开发。

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

对于 XPS 打印路径,筛选器是驱动程序为打印机准备打印数据的主要方式。 在 Windows Vista 之前的 Microsoft Windows 操作系统版本中,打印处理器和呈现模块执行筛选器工作。

XPS 筛选器是导出 DllGetClassObjectDllCanUnloadNow 函数的 DLL。 筛选器管道管理器在加载和卸载 XPS 筛选器 DLL 时调用这些函数。 加载筛选器 DLL 后,筛选器管道管理器执行以下操作:

卸载筛选器 DLL 之前,筛选器管道管理器会调用 DllCanUnloadNow

在某些较旧的 XPS 筛选器中, DllGetClassObject 函数检索对筛选器的 IPrintPipelineFilter 接口的引用,而不是对 IClassFactory 接口的引用。 为了向后兼容,Windows Vista 和更高版本的 Windows 中的筛选器管道管理器将继续支持这些筛选器。 但是,对于新的筛选器设计, DllGetClassObject 应检索对 IClassFactory 接口的 引用。

XPS 筛选器使打印子系统更可靠,因为筛选器在与后台处理程序不同的进程中运行。 此“沙盒”既防止故障,又允许插件以不同的安全权限运行。 XPSDrv 还允许跨打印机系列重复使用筛选器,以降低成本和开发时间。

为了获得最大的灵活性和重用性,每个筛选器都应执行特定的打印处理功能。 例如,一个筛选器仅应用水印,而另一个筛选器仅执行记帐。

GitHub 上提供了以下 XPS 驱动程序和筛选器示例

  • 手册

  • 颜色转换

  • Nup

  • 页面缩放

  • 水印

有关筛选器管道管理器的详细信息,请参阅 XPSDrv 呈现模块

有关实现筛选器的详细信息,请参阅 实现 XPS 筛选器

有关打印筛选器中的异步通知的详细信息,请参阅 打印筛选器中的异步通知

必须使用筛选器 管道配置文件来配置筛选器

有关如何调试打印筛选器管道服务的信息,请参阅 将调试器附加到打印筛选器管道服务

在 Windows 7 中,XPS 筛选器可以使用 XPS 光栅化服务 将 XPS 文档中的固定页转换为位图。

有关 Windows 使用 GPU 加速进行 XPS 光栅化的方式的信息,请参阅 XPSRas GPU 使用情况决策树