打印支持虚拟打印机的 MSIX Manifest 规范
此功能使无需旧版 V3/V4 打印驱动程序即可打印到虚拟打印机,因为 Windows 计划弃用第三方 V3/V4 打印驱动程序。 有关详细信息,请参阅 Windows 上第三方打印机驱动程序的服务终止计划。
虚拟打印机体系结构有助于在没有第三方驱动程序的情况下实现软件打印机。 通过此体系结构,ISV(独立软件供应商)能够将软件打印机作为应用程序实现第三方 V3/V4 驱动程序当前支持的功能。
本文介绍如何在清单中将应用程序注册为软件打印机。
有关详细信息,请参阅以下文章:
主题 | 描述 |
---|---|
打印支持应用设计指南 | 向在设备上实现打印支持应用 (PSA) 的打印机 OEM 和 IHV 提供相关指南和示例。 |
打印支持应用 v3 API 设计指南 | 向在设备上实现 v3 打印支持应用 (PSA) 的打印机 OEM 和 IHV 提供相关指南和示例。 |
打印支持应用 v4 API 设计指南 | 向在设备上实现 v4 打印支持应用 (PSA) 的打印机 OEM 和 IHV 提供相关指南和示例。 |
打印支持应用关联 | 提供有关将打印支持应用(PSA)与打印机相关联的指导和示例。 |
打印支持应用(PSA) 是一种架构,旨在帮助独立硬件供应商(IHV)在不使用第三方驱动程序的情况下向 IPP 打印机添加自定义功能。 为了方便向软件打印机的过渡,所有 API 都是 PrintSupportApp API 命名空间的一部分,并重新使用适用于虚拟打印机架构的一些 PSA 协定。
新的清单协定类似于 Windows.printSupportWorkflow 协定,但此协定需要更多条目,因为它用于安装虚拟打印机。
新的 Windows 部署扩展处理程序(DEH)基于清单声明安装虚拟打印机,当用户打印到已安装的虚拟打印机时,Windows 打印组件会调用应用。
清单属性
printSupport:Extension - 虚拟打印机的扩展入口
类别 - Windows.printSupportVirtualPrinterWorkflow 用于实现虚拟打印机的应用的新约定
PrintSupportVirtualPrinter - 每个条目均指定要随应用程序一起安装的软件终结点打印队列。 每个 PrintSupportVirtualPrinter 条目可以具有以下属性:
PreferredInputFormat - 此属性指示虚拟打印机的首选输入 PDL 格式。 Windows 打印系统在为所有打印路径向虚拟打印机提供 PDL 数据之前会生成此格式。 该字段只能是以下值之一:application/oxps 或 application/postscript。 如果在此字段中指定了其他格式,则安装将失败。 如果未指定该字段,则 application/oxps 设置为已安装的虚拟打印机的首选 PDL 格式。
OutputFileTypes - 在 appx 清单中指定此属性时,Windows 打印系统会创建一个标记为文件打印机的打印机队列,当应用程序开始打印到虚拟打印机时,向用户显示“另存为”对话框。 此字段的值应包含目标文件扩展名,如 pdf/pwgr/ps 等。这些值存储在驱动程序数据中,并将其添加到“另存为对话框”作为允许的扩展。 如果虚拟打印机不希望文件打印行为(这包括将打印数据存储到云的虚拟打印机或将数据发送到 OneNote 等应用程序的打印机),则不应将此字段添加到清单中。
支持的格式 - 该元素可以用于虚拟打印机,以指定它可以处理的所有 PDL 格式。 这用于直通打印应用程序,例如 Microsoft Edge,用于识别像 PDF 这样的格式,并直接将 PDF 流传递到虚拟打印机,无需经过 Windows 打印系统的任何更改。 此字段可以将 SupportedFormat 作为子元素。
SupportedFormat - 元素指定单个直通 PDL 格式,并且可以具有以下属性。
类型 - 此属性用于指定虚拟打印机支持的 MIME 类型
MaxVersion - 此属性指定虚拟打印机可以接收的 PDL 格式的最大版本。 MaxVersion 值的格式必须为 MajorVersion.MinorVersion。 如果 Windows 打印系统采用任何其他格式,则打印机安装失败。 MajorVersion 和 MinorVersion 只能是数字。 如果存在任何字符,版本字段将失效并忽略。
PdcFile - 此属性必须指向应用程序包中的资源文件。 该文件应包含打印设备功能 XML 格式的内容,即定义打印机功能,并应用于定义任何自定义功能/选项或参数。 如果值不存在,或者文件内容不是有效的 PDC 格式,则这是强制字段,打印机安装将失败。
PdrFile - 如果提供,此属性必须指向应用程序包中的资源文件。 该文件应包含 XML 格式的打印设备资源。 如果应用想要本地化自定义打印首选项,则应提供此字段。 此字段是可选的,如果此字段不存在,打印首选项的资源本地化由打印系统处理。
DisplayName - 指定要安装的虚拟打印机队列的名称。 此字符串的限制与 Windows 打印机名称的限制相同。
PrinterUri - 指定可供 PSA 应用程序用来标识打印机的唯一 URI。 单个虚拟打印机应用可以指定多个软件终结点,这会导致安装多个打印机。 PrinterUri 字段可用于区分这些打印机。 此 URI 输出来自 IppPrintDevice::PrinterUri API。 如果未指定 URI,Windows 会将任意唯一 URI 分配给打印机。
清单示例
<Extensions>
<printsupport2:Extension Category="windows.printSupportVirtualPrinterWorkflow" EntryPoint="Tasks.PrintSupportWorkflowBackgroundTask">
<PrintSupportVirtualPrinter DisplayName="ms-resource://PRINTER_NAME1" PrinterUri="contoso-psa:printer1" PreferredInputFormat="application/postscript" OutputFileTypes="ps;pdf" PdcFile="Config\PRINTER_PDC1.xml" PdrFile="Config\PRINTER_PDR1.xml">
<SupportedFormats>
<SupportedFormat Type="application/postscript" />
<SupportedFormat Type="application/pdf" MaxVersion="1.7" />
</SupportedFormats>
</PrintSupportVirtualPrinter>
</printsupport2:Extension>
<printsupport2:Extension Category="windows.printSupportVirtualPrinterWorkflow" EntryPoint="Tasks.PrintSupportWorkflowBackgroundTask">
<PrintSupportVirtualPrinter DisplayName="ms-resource://PRINTER_NAME2" PrinterUri ="contoso-psa:printer2" PreferredInputFormat="application/oxps" OutputFileTypes="pwgr;pdf" PdcFile="ms-appx:///PRINTER_PDC2.xml" PdrFile="ms-appx:///PRINTER_PDR2.xml">
<SupportedFormats>
<SupportedFormat Type="application/pdf" MaxVersion="1.7" />
</SupportedFormats>
</PrintSupportVirtualPrinter>
</printsupport2:Extension>
<printsupport:Extension Category="windows.printSupportExtension" EntryPoint="Tasks.PrintSupportExtensionBackGroundTask"/>
<printsupport:Extension Category="windows.printSupportSettingsUI" EntryPoint="PrintSupportApp.App"/>
<printsupport:Extension Category="windows.printSupportJobUI" EntryPoint="PrintSupportApp.App"/>
</Extensions>