Language: HTML | XAML

How to change standard options in the print preview UI (XAML)

Applies to Windows only

This tutorial shows how to customize the print options shown in the print preview UI.

By default, the print preview UI shows the following options:

ColorMode Copies Orientation

 

In addition to the preceding settings, Windows provides several other common printer options that you can add to the print preview UI. Here are those other common options.

Binding Collation Duplex HolePunch
InputBin MediaSize MediaType NUp
PrintQuality Staple   

 

These options are defined in the StandardPrintTaskOptions class. You can add to or remove options from the list of options displayed in the print preview UI. You can also change the order in which they appear, and set the default settings that are shown to the user.

However, the modifications that you make by using this method affect only the print preview UI. The user can always access all of the options that the printer supports by tapping More settings in the print preview UI.

Although your app can specify any print options to be displayed, only those that are supported by the selected printer are shown in the print preview UI. The print UI won't show options that the selected printer doesn't support.

Objective: Customize the print options shown in the print preview UI.

Prerequisites

  • You must be familiar with C#, C++, or Visual Basic, XAML, events, and event handling.
  • You must have Microsoft Visual Studio installed.
  • You must have a printer installed.
  • You must have a Windows Store app using C++, C#, or Visual Basic to which you want to change the print options. If you don't have your own app, you can download the PrintSample sample app and use that.
  • Your app must already support basic Windows printing. If you don't have such an app, review Quickstart: Printing from your app to learn how to add basic Windows printing support to your app.

Instructions

1. Open your app in Visual Studio

The procedure described in this tutorial refers to the PrintSample app from the PrintSample sample app. If you are adding a print button to your own app, open your app in Visual Studio instead of the PrintSample sample app.

  1. Open the Windows Store app print sample and download the C# example to your computer.
  2. In Visual Studio, click File > Open Project and go to the folder that contains the solution file of the sample app that you downloaded in the previous step.
  3. Select the PrintSample solution file, and click Open.

2. Build and test the app

  1. Click Build > Build Solution to build the app you are working on. Make sure that there are no error messages in the Output pane at the bottom of the screen.
  2. Click Debug > Start Without Debugging.
  3. Verify that, after a few seconds, the screen displays the Print JS Sample app.
  4. If the app runs without error, return to Visual Studio and click Debug > Stop Debugging.

3. Define the print options to display

When the app's screen is loaded, it registers for the Print contract. Part of that registration includes defining the PrintTaskRequested event handler. The code to customize the options displayed in the print preview UI is added to the PrintTaskRequested event handler.

Modify the PrintTaskRequested event handler to include the printTask.options instructions that configure the print settings that you want to display in the print preview UI.

  1. For the screen in your app for which you want to show a customized list of print options, override the PrintTaskRequested event handler in the base class to include code that specifies the options to display when the screen is printed.

    Note  This example is taken from ScenarioInput3.xaml.cs of the Print Sample sample app. If you are adding this code to your app, assign the print options that you want to display to the user in the print preview UI.

    Important  Calling displayedOptions.clear() removes all of the print options from the print preview UI, including the More settings link. Be sure to append the options that you want to show on the print preview UI.

    
    protected override void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
    {
        PrintTask printTask = null;
        printTask = e.Request.CreatePrintTask("C# Printing SDK Sample", 
                                              sourceRequestedArgs =>
                                              {
                                                  IList<string> displayedOptions = printTask.Options.DisplayedOptions;
    
                                                  // 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
                                                  displayedOptions.Clear();
                                                  displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Copies);
                                                  displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Orientation);
                                                  displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.MediaSize);
                                                  displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Collation);
                                                  displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Duplex);
    
                                                  // Preset the default value of the printer option
                                                  printTask.Options.MediaSize = PrintMediaSize.NorthAmericaLegal;
                                                  
                                                  // Print Task event handler is invoked when the print job is completed.
                                                  printTask.Completed += async (s, args) =>
                                                  {
                                                      // Notify the user when the print operation fails.
                                                      if (args.Completion == PrintTaskCompletion.Failed)
                                                      {
                                                          await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                                                          {
                                                              rootPage.NotifyUser("Failed to print.", NotifyType.ErrorMessage);
                                                          });
                                                      }
                                                  };
    
                                                  sourceRequestedArgs.SetSource(printDocumentSource);
                                              });
    }
    
    
    
  2. You can also set the default values of the options in the print preview UI. The following line of code, taken from the preceding code example, sets the default value of the MediaSize option.

    
    // Preset the default value of the printer option
    printTask.Options.MediaSize = PrintMediaSize.NorthAmericaLegal;
    
    
    

Summary and next steps

For the complete source code for this and other Windows Store app printing scenarios, see the Print Sample sample app.

Related topics

Printing

 

 

Show:
© 2014 Microsoft