如何更改打印预览 UI 中的标准选项 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本教程介绍如何自定义打印预览 UI 中的打印选项。
默认情况下,打印预览 UI 显示以下选项:
colorMode | copies | orientation |
除了前面的设置,Windows 还提供了几个其他常用的打印机选项,你可以将这些选项添加到打印预览 UI 中。以下为这些其他常用选项。
binding | collation | duplex | holePunch |
inputBin | mediaSize | mediaType | nUp |
printQuality | staple |
这些选项在 standardPrintTaskOptions 类中进行定义。你可以将选项添加到打印预览 UI 中显示的选项列表,或者从中删除选项。你还可以更改它们的显示顺序,并设置显示给用户的默认设置。
但是,通过使用此方法所进行的修改将仅影响打印预览 UI。通过在打印预览 UI 中单击“更多设置”,用户始终可以访问打印机支持的所有选项。
尽管你的应用可以指定要显示的任何打印选项,但只有所选打印机支持的那些选项才会在打印预览 UI 中显示。打印预览 UI 不会显示所选打印机不支持的选项。
路线图: 本主题与其他主题有何关联?请参阅:
你需要了解的内容
技术
先决条件
- 你必须熟悉 HTML、JavaScript、Windows 事件和事件处理。
- 必须安装了 Microsoft Visual Studio。
- 必须安装了打印机。
- 你必须有一个你希望向其添加打印按钮的 Windows 应用商店应用。如果你没有自己的应用,则可以下载 PrintSample 示例应用并使用该应用。
- 你的应用必须已经支持基本 Windows 打印。如果还不支持,请查看快速入门:从你的应用打印以了解如何在你的应用中添加基本 Windows 打印支持。
说明
步骤 1: 在 Visual Studio 中打开应用
本教程中所述的过程指的是 PrintSample 示例应用中的 PrintSampleJS 应用。如果你要自定义自己的应用的打印预览 UI,请在 Visual Studio 中(而不是在“打印示例”示例应用中)打开你的应用。
- 打开 PrintSample 示例应用并将 JavaScript 示例下载到你的计算机。
- 在 Visual Studio 中,单击“File”>“Open Project”并转到包含你在上一步中下载的示例应用的解决方案文件的文件夹。
- 选择 PrintSampleJS 解决方案文件,然后单击“打开”。
步骤 2: 生成并测试应用
- 单击“生成”>“生成解决方案”来生成你要在其上工作的应用。确保屏幕底部的“输出”窗格中没有错误消息。
- 单击“调试”>“开始执行(不调试)”。****
- 请确认,在几秒后,屏幕中会显示 PrintJSSample 应用。
- 如果应用运行且未显示错误,请返回到 Visual Studio,并单击“调试”>“停止调试”。****
步骤 3: 定义要显示的打印选项
加载应用的屏幕时,该屏幕将注册打印合约。定义 PrintTaskRequested 事件处理程序是注册的一部分。会将用于自定义在打印预览 UI 中显示的选项的代码添加到 PrintTaskRequested 事件处理程序中。
修改 PrintTaskRequested 事件处理程序以包含 printTask.options 说明,这些说明配置你要在打印预览 UI 中显示的打印设置。
在应用中查找 PrintTaskRequested 事件处理程序。在 PrintSample 示例应用中,基本 PrintTaskRequested 事件处理程序看起来就像此示例一样。
function onPrintTaskRequested(printEvent) { var printTask = printEvent.request.createPrintTask("Print Sample", function (args) { args.setSource(MSApp.getHtmlPrintDocumentSource(document)); // Register the handler for print task completion event printTask.oncompleted = onPrintTaskCompleted; }); }
function onPrintTaskCompleted(printTaskCompletionEvent) { // Notify the user about the failure if (printTaskCompletionEvent.completion === Windows.Graphics.Printing.PrintTaskCompletion.failed) { WinJS.log && WinJS.log("Failed to print.", "sample", "error"); } }
添加你希望显示在打印预览 UI 中的打印选项。这些选项将按你添加它们的顺序垂直显示在打印预览 UI 中。你添加的第一个选项将处于顶部,剩余的选项将按顺序跟在下面。
注意 此代码是从 PrintSample 示例应用的 scenario3.js 中获取的。如果要将此代码添加到你的应用,请分配要在打印预览 UI 中显示给用户的打印选项。
要点 调用 printTask.options.displayedOptions.clear() 将删除打印预览 UI 中的所有打印选项,仅保留“更多设置”链接。请务必使用 append 方法指定你希望在打印预览 UI 上显示的选项。
function onPrintTaskRequested(printEvent) { var printTask = printEvent.request.createPrintTask("Print Sample", function (args) { args.setSource(MSApp.getHtmlPrintDocumentSource(document)); // Choose the printer options to be shown. // The order in which the options are appended determines the order in which they appear in the UI printTask.options.displayedOptions.clear(); printTask.options.displayedOptions.append(Windows.Graphics.Printing.StandardPrintTaskOptions.copies); printTask.options.displayedOptions.append(Windows.Graphics.Printing.StandardPrintTaskOptions.mediaSize); printTask.options.displayedOptions.append(Windows.Graphics.Printing.StandardPrintTaskOptions.orientation); printTask.options.displayedOptions.append(Windows.Graphics.Printing.StandardPrintTaskOptions.duplex); // Preset the default value of the printer option printTask.options.mediaSize = Windows.Graphics.Printing.PrintMediaSize.northAmericaLegal; // Register the handler for print task completion event printTask.oncompleted = onPrintTaskCompleted; }); }
如上所述生成并测试你的应用。
备注
有关 Windows 应用商店应用中的更多打印方案,请参阅 PrintSample 示例应用。