如何更改打印预览 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 中(而不是在“打印示例”示例应用中)打开你的应用。

  1. 打开 PrintSample 示例应用并将 JavaScript 示例下载到你的计算机。
  2. 在 Visual Studio 中,单击“File”>“Open Project”并转到包含你在上一步中下载的示例应用的解决方案文件的文件夹。
  3. 选择 PrintSampleJS 解决方案文件,然后单击“打开”。

步骤 2: 生成并测试应用

  1. 单击“生成”>“生成解决方案”来生成你要在其上工作的应用。确保屏幕底部的“输出”窗格中没有错误消息。
  2. 单击“调试”>“开始执行(不调试)”。****
  3. 请确认,在几秒后,屏幕中会显示 PrintJSSample 应用。
  4. 如果应用运行且未显示错误,请返回到 Visual Studio,并单击“调试”>“停止调试”。****

步骤 3: 定义要显示的打印选项

加载应用的屏幕时,该屏幕将注册打印合约。定义 PrintTaskRequested 事件处理程序是注册的一部分。会将用于自定义在打印预览 UI 中显示的选项的代码添加到 PrintTaskRequested 事件处理程序中。

修改 PrintTaskRequested 事件处理程序以包含 printTask.options 说明,这些说明配置你要在打印预览 UI 中显示的打印设置。

  1. 在应用中查找 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");
        }
    }
    
  2. 添加你希望显示在打印预览 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;
        });
    }
    
  3. 如上所述生成并测试你的应用。

备注

有关 Windows 应用商店应用中的更多打印方案,请参阅 PrintSample 示例应用

相关主题

Windows 应用商店应用打印示例

快速入门:从你的应用打印

开发支持打印的 Windows 应用商店应用的最佳实践