在 Windows 8.1 中,UWP 设备应用允许打印机制造商自定义显示高级打印设置的浮出控件。 本主题介绍高级打印设置浮出控件,并说明 C# 版本的打印设置和打印通知示例如何将默认浮出控件替换为自定义浮出控件。 要了解有关 UWP 设备应用的一般详细信息,请参阅初识 UWP 设备应用。
C# 版本的打印设置和打印通知示例使用 Preferences.xaml 页面来演示高级打印设置的自定义浮出控件的 UI。 打印帮助程序类用于创建设备上下文 (IPrinterExtensionContext) 并执行设备查询。 PrinterHelperClass.cs 文件位于 DeviceAppForPrintersLibrary 项目中,并使用 PrinterExtensionLibrary 项目中定义的 API。 打印机扩展库提供了一种访问 v4 打印驱动程序的打印机扩展接口的便捷方法。 有关详细信息,请参阅打印机扩展库概述。
高级打印设置体验是指用户想要选择“打印”窗口中未提供的打印设置时打印机提供的功能。 可通过“打印”窗口中的更多设置链接访问它。 它不是全屏体验,而是显示在浮出控件中,该浮出控件用于显示当用户单击或点击外部时关闭的轻型上下文用户界面。
此体验可用于突出显示打印机的差异化功能,例如能够将水印应用于文档页、提供安全打印选项或图像增强选项。
如果没有为打印机安装 UWP 设备应用,Windows 将提供默认打印设置体验。 如果 Windows 检测到已为打印机安装了 UWP 设备应用,并且该应用已选择加入 扩展,则你的应用将替换 Windows 提供的默认体验。
要调用高级打印设置的浮出控件,请执行以下操作:
- 打开支持打印的 UWP 应用
- 通过在屏幕右侧轻扫来访问(或使用 Windows 徽标键 + C)超级按钮
- 点击“设备”超级按钮
- 点击“打印”
- 点击打印机
- 此时会打开“打印”窗口
- 单击“打印”窗口中的更多设置链接
- 此时会打开高级打印设置浮出控件
- 在没有为打印机安装 UWP 设备应用时,将显示默认浮出控件
- 如果已为打印机安装了 UWP 设备应用,将显示自定义浮出控件

准备工作:
- 请确保使用 v4 打印驱动程序安装打印机。 有关详细信息,请参阅开发 v4 打印驱动程序。
- 设置你的开发电脑。 有关下载工具和创建开发人员帐户的信息,请参阅入门。
- 将应用与商店相关联。 请参阅创建 UWP 设备应用以获取相关信息。
- 为你的打印机创建设备元数据,将其与你的应用关联起来。 请参阅创建设备元数据以了解详细信息。
- 为你的应用的主页构建 UI。 所有 UWP 设备应用都可以从“开始”启动,并以全屏方式显示。 使用“开始”体验,以符合设备特定品牌和功能的方式突出你的产品或服务。 它可以使用的 UI 控件类型没有特殊限制。 要开始设计全屏体验,请参阅 Microsoft Store 设计原则。
- 如果要使用 C# 或 JavaScript 编写应用,请将 PrinterExtensionLibrary 和 DeviceAppForPrintersLibrary 项目添加到你的 UWP 设备应用解决方案。 可以在打印设置和打印通知示例中找到每个项目。
要让 Windows 识别应用可以提供有关高级打印设置的自定义浮出控件,它必须注册打印任务设置扩展。 此扩展在 元素中声明,其属性 设置为值 。 在 C# 和 C++ 示例中, 属性设置为 ,属性 设置为 。
可以在 Microsoft Visual Studio 中清单设计器的“声明”选项卡上添加打印任务设置扩展。 还可以使用 XML(文本)编辑器手动编辑应用包清单 XML。 在“解决方案资源管理器”中,右键单击 Package.appxmanifest 文件。
此示例显示 元素中的打印任务设置扩展,因为它显示在应用包清单文件 Package.appxmanifest 中。
在构建应用之前,应与设计人员和营销团队合作来设计用户体验。 用户体验应体现公司的品牌形象,帮助你与用户建立联系。
在设计自定义浮出控件之前,请务必查看 UWP 应用浮出控件指南。 这些指南有助于确保浮出控件提供与其他 UWP 应用一致的直观体验。
对于应用的主页,请记住,Windows 8.1 可以在一个监视器上显示不同大小的多个应用。 请参阅以下指南,详细了解应用如何在不同屏幕大小、窗口大小和方向之间正常重排。
- 窗口大小和屏幕缩放指南
- 调整窗口大小以适应高窄布局的指南
显示高级打印设置的浮出控件宽为 646 像素,高度至少为 768 像素(实际高度取决于用户的屏幕分辨率)。 浮出控件标题区域中的“后退”按钮由 Windows 提供。 “应用标题”文本是应用清单中的应用标题。 标题区域高 80 像素,因此为自定义浮出控件保留的可视区域为 688 像素。

标题、背景色、文本颜色和自定义浮出控件上的小徽标取自应用包清单文件中的 元素。
此示例显示应用包清单文件 (Package.appxmanifest) 中 元素定义的标题和图标。
- 保持相同的外观。 将自定义浮出控件与“开始”体验(应用的主页)的设计对齐,包括字体、颜色和控件等元素。 无论用户从何处调用应用,都应该感觉熟悉。
- 使交互保持简单。 避免耗时或复杂的交互。 在大多数情况下,最好在“开始”体验中完成设置打印机、查看状态、订购墨水和故障排除等操作。
- 尽量减少导航。 避免让用户在自定义浮出控件中的多个页面之间来回导航。 请改用垂直滚动或内联控件,例如渐进式披露控件、下拉列表和内联错误消息。
- 不要使用轻型消除浮出控件。 打印体验已使用轻型消除浮出控件。 在自定义浮出控件中包含另一个轻型消除元素可能会使用户感到困惑。
- 禁用引导用户离开打印体验的链接。 当用户正在打印内容时,应采取措施确保它们保留在打印上下文中。 例如,如果你的应用具有指向应用其他区域的链接(例如主页或用于购买墨水的页面),则应禁用它们,以便用户不会意外地离开高级打印设置体验。
如果你的应用已声明打印任务设置扩展,它必须实现一种 方法来处理应用 Activation 事件。 应用激活是在应用启动时,应用可以选择启动哪个页面。 对于已声明打印任务设置扩展的应用,Windows 会在 Activated 事件参数中传递打印任务扩展上下文:Windows.ApplicationModel.Activation.IActivatedEventArgs。
当事件参数 的属性等于 Windows.ApplicationModel.Activation.ActivationKind.printTask 时,UWP 设备应用可以确定激活适用于高级打印设置(有人刚刚点击了打印设置对话框中的“更多选项”设置)。
本示例显示 方法中的激活事件处理程序,如 Constants.cs 文件中所示。 然后,事件参数将强制转换为 Windows.ApplicationModel.Activation.PrintTaskSettingsActivatedEventArgs。 尽管该示例在 Constants.cs 文件中包括此代码,但它实际上是 App.xaml.cs 文件中定义的 App 类的一部分。
调用 方法时,将打印任务配置上下文分配给 MainPage 类的变量。 这将允许自定义浮出控件在启动时访问打印设置。
传递给 方法的事件参数公开用于访问和控制打印机的属性:
- args.configuration 属性提供类型为 Windows.Devices.Printers.Extensions.PrintTaskConfiguration 的对象。 此对象提供对打印任务扩展上下文的访问权限,还可以添加事件处理程序来更新打印票证。
- args.configuration.printerExtensionContext 属性提供类型为 Windows.Devices.Printers.Extensions.PrinterExtensionContext 的对象。 此对象是指向 Print Schema、PrintTicket 和打印队列信息的 PrinterExtensionLibrary 接口的指针。 如果未公开任何接口,则为 null。 有关详细信息,请参阅打印机扩展库概述。
本示例显示 方法,如 Constants.cs 文件中所示。
在自定义浮出控件页 Preferences.xaml.cs 中,一个名为 的类充当指向 MainPage 类的指针,以便可以从浮出控件访问打印任务扩展上下文和打印机设备上下文。
此示例显示部分 类的指针,来自 Preferences.xaml.cs 文件。 下载打印设置和打印通知示例以查看完整代码。
调用 Preferences.xaml.cs 的页面构造函数时,将为打印任务扩展上下文(名为 的 对象)和打印机设备上下文(名为 的 对象)创建对象。
创建这些对象后,打印机设备上下文将在 方法中用于加载 TextBlocks 和 ComboBoxes。 请注意,与 JavaScript 不同,选择的更改不会在与应用其他部分相同的线程上触发。 你必须保留用户选择的本地缓存,以供以后使用。
此示例显示 Preferences.xaml.cs 文件中的自定义浮出控件页面构造函数 和其他帮助程序方法。
当用户完成设置高级打印设置后,Microsoft Store 设备应用需要在用户返回到“打印”窗口之前保存更改。 为此,应用需要侦听用户点击“后退“按钮(从自定义浮出控件页面)的时间。 发生这种情况时,将触发打印任务扩展上下文(对象 )的 事件。
本示例显示 Preferences.xaml.cs 文件中自定义浮出控件的 事件处理程序中添加的 事件侦听器。 触发 事件时,将调用 方法(该方法也在 Preferences.xaml.cs 文件中)。
在 方法中,应用首先使用 对象为打印机扩展上下文上的每项功能设置当前选定的选项。 然后,它在作为 方法参数传递进来的 对象上调用 方法。 Windows.Devices.Printers.Extensions.PrintTaskConfigurationSaveRequest 类中的 方法使用打印机扩展上下文验证打印票证并保存打印任务配置。
此示例显示 Preferences.xaml.cs 文件中的 方法。 由于 事件未在 UI 线程上引发,因此需要使用 Windows.UI.Core.CoreDispatcher 将消息发布到 UI 线程,以在验证和保存票证时显示相应的消息。
打印设置和打印通知示例演示了如何设置定义的功能,其中涵盖大多数打印选项。 但是,某些选项需要自定义 UI 来获取用户指定的值。 例如,如果应用使用高级打印设置来指定自定义页面大小,则会执行以下步骤来保存用户指定的值:
- 在应用激活期间检索打印票证。 之前的步骤 3:处理激活介绍了打印设置的应用激活。
- 检查是否指定了页面大小选项。 在 C# 或 JS 应用中,打印帮助程序类可以检查此选项。 在 C++ 应用中,调用 IPrintSchemaOption 上的 QueryInterface 以检索 IPrintSchemaPageMediaSizeOption。
本示例演示打印帮助程序类中的一种方法,用于检查是否指定了页面大小选项。
- 在自定义浮出控件中,会显示一个自定义 UI,要求用户输入页面高度和宽度,并从 IPrintSchemaPageMediaSizeOption 检索用户指定的高度和宽度。
此示例显示了一个自定义浮出控件的方法,用于要求用户输入页面高度和宽度。
- 使用用户指定的值更新 对象,并验证高度和宽度是否与用户指定的值匹配。
此示例是用于更新打印机帮助程序类中的 对象的帮助程序方法。 如果自定义浮出控件中的 处理程序确定请求了自定义页面大小选项,则会调用此函数。
在测试 UWP 设备应用之前,必须使用设备元数据将其链接到你的打印机。
- 你需要一份打印机的设备元数据包副本,以便在其中添加设备应用信息。 如果没有设备元数据,可以使用设备元数据创作向导构建,如主题为 UWP 设备应用创建设备元数据所述。
以下步骤构建你的应用并安装设备元数据。
- 启用测试签名。
- 通过双击 DeviceMetadataWizard.exe,从 %ProgramFiles(x86)%Windows Kits8.1binx86 启动设备元数据创作向导
- 在“工具”菜单中,选择“启用测试签名”。
- 重新启动计算机
- 通过打开解决方案 (.sln) 文件生成解决方案。 按 F7 或在示例加载后从顶部菜单中转到“生成-生成解决方案”。>
- 断开连接并卸载打印机。 此步骤是必需的,以便 Windows 下次检测设备时读取更新的设备元数据。
- 编辑和保存设备元数据。 要将设备应用链接到你的设备,必须将设备应用与你的设备相关联
- 如果设备元数据创作向导尚未打开,请双击 DeviceMetadataWizard.exe 从 %ProgramFiles(x86)%Windows Kits8.1binx86 将其打开。
- 单击“编辑设备元数据”。 这样,就可以编辑现有的设备元数据包。
- 在“打开”对话框中,找到与 UWP 设备应用关联的设备元数据包。 (它具有 devicemetadata-ms 文件扩展名。)
- 在“指定 UWP 设备应用信息”页上,在“UWP 设备应用”框中输入 Microsoft Store 应用信息。 单击“导入 UWP 应用清单文件”,自入“包名称”、“发布者名称”和“UWP 应用 ID”。
- 如果你的应用正在注册打印机通知,请填写“通知处理程序”框。 在”事件 ID“中,输入打印事件处理程序的名称。 在”事件资产“中,输入代码所在的文件的名称。
- 完成后,单击“下一步”,直到进入“完成”页。
- 在“查看设备元数据包”页上,确保所有设置都正确,并选择“将设备元数据包复制到本地计算机上的元数据存储”复选框中。 然后单击保存。
- 重新连接打印机,以便 Windows 在设备连接时读取更新的设备元数据。
如果高级打印设置浮出控件显示默认浮出控件,而不是你的应用实现的自定义浮出控件...
- 可能的原因:测试签名未打开。 有关打开调试的信息,请参阅本主题中的“调试”部分。
- 可能的原因:应用未查询正确的包系列名称。 在代码中检查包系列名称。 在 Visual Studio 中打开 package.appxmanifest,并确保要查询的包系列名称与“打包”选项卡中“包系列名称”字段中的名称匹配。
- 可能的原因:设备元数据没有与包系列名称关联。 使用设备元数据创作向导打开设备元数据,并检查包系列名称。 双击 DeviceMetadataWizard.exe,从 %ProgramFiles(x86)%Windows Kits8.1binx86 启动向导。
如果高级打印设置的自定义浮出控件在启动后立即消失...
- 可能的原因:在 Windows 8 中,浮出控件中有一个已知问题,即 UWP 应用将在调试器下关闭。 确认激活成功后,关闭调试。 如果需要调试保存打印票证,请在激活后附加调试器。
开发 v4 打印驱动程序
打印机扩展接口(v4 打印驱动程序)
双向通信
UWP 应用入门
创建 UWP 设备应用(分步指南)
为 UWP 设备应用创建设备元数据(分步指南)
到此这篇打印机打印控件(打印控件功能)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/37017.html