Настройка пользовательского интерфейса предварительного просмотра

В этом разделе описывается настройка параметров и параметров печати в пользовательском интерфейсе предварительного просмотра. Дополнительные сведения о печати см. в разделе Печать из приложения.

Совет Большинство примеров в этом разделе основаны на примере печати универсальная платформа Windows (UWP).

Важные API

Настройка параметров печати

По умолчанию в пользовательском интерфейсе предварительного просмотра отображаются параметры печати ColorMode, Copies и Orientation. Кроме них существует несколько других распространенных параметров принтера, которые можно добавить в пользовательский интерфейс предварительного просмотра:

Эти параметры определены в классе StandardPrintTaskOptions. Вы можете добавить или удалить параметры из списка, отображаемого в пользовательском интерфейсе предварительного просмотра. Можно также менять порядок отображения параметров и задавать значения по умолчанию, которые будут показаны пользователю.

Но изменения, внесенные этим способом, повлияют только на пользовательский интерфейс предварительного просмотра. Пользователь всегда может получить доступ ко всем параметрам, поддерживаемым принтером, нажав кнопку **Дополнительные параметры*- в пользовательском интерфейсе предварительного просмотра.

Примечание

Хотя приложение может указать любые параметры печати для отображения, в пользовательском интерфейсе предварительного просмотра отображаются только те, которые поддерживаются выбранным принтером. Параметры, не поддерживаемые выбранным принтером, не будут отображаться в пользовательском интерфейсе печати.

Определение параметров для отображения

При загрузке экрана приложения выполняется регистрация для контракта «Печать». Часть этой регистрации включает в себя определение обработчика событий PrintTaskRequested. Код для настройки параметров, отображаемых в пользовательском интерфейсе предварительного просмотра, добавляется в обработчик событий **PrintTaskRequested*- .

Измените обработчик событий PrintTaskRequested , чтобы включить инструкции printTask.options , которые настраивают параметры печати, которые должны отображаться в пользовательском интерфейсе предварительного просмотра. Для экрана в приложении, для которого требуется отобразить настраиваемый список параметров печати, переопределите обработчик событий **PrintTaskRequested*- во вспомогательном классе, чтобы включить код, указывающий параметры, отображаемые при печати экрана.

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 scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
               {
                     MainPage.Current.NotifyUser("Failed to print.", NotifyType.ErrorMessage);
               });
            }
         };

         sourceRequestedArgs.SetSource(printDocumentSource);
   });
}

Важно!

Вызов метода displayedOptions.clear() удаляет все параметры печати из пользовательского интерфейса предварительного просмотра, включая ссылку **Дополнительные параметры*- . Не забудьте добавить параметры, которые требуется показывать в пользовательском интерфейсе предварительного просмотра.

Определение параметров по умолчанию

Можно также задать значения по умолчанию для параметров в пользовательском интерфейсе предварительного просмотра. В следующей строке кода из предыдущего примера устанавливается значение по умолчанию для параметра MediaSize:

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

Добавление новых параметров печати

Здесь мы объясним, как создать новый параметр печати, определить список значений, поддерживаемых параметром, а затем добавить его в предварительный просмотр. Как и в предыдущем разделе, добавьте новый параметр печати в обработчик событий PrintTaskRequested .

Сначала получите объект PrintTaskOptionDetails. Он используется для добавления нового параметра печати к пользовательскому интерфейсу предварительного просмотра. Затем очистите список параметров, отображающихся в пользовательском интерфейсе предварительного просмотра, и добавьте параметры, которые вы хотите показывать пользователю при печати из приложения. После этого создайте новый параметр печати и инициализируйте список значений параметров. Наконец, добавьте новый параметр и назначьте обработчик для события **OptionChanged*-.

protected override void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
{
   PrintTask printTask = null;
   printTask = e.Request.CreatePrintTask("C# Printing SDK Sample", sourceRequestedArgs =>
   {
         PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);
         IList<string> displayedOptions = printDetailedOptions.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.ColorMode);

         // Create a new list option
         PrintCustomItemListOptionDetails pageFormat = printDetailedOptions.CreateItemListOption("PageContent", "Pictures");
         pageFormat.AddItem("PicturesText", "Pictures and text");
         pageFormat.AddItem("PicturesOnly", "Pictures only");
         pageFormat.AddItem("TextOnly", "Text only");

         // Add the custom option to the option list
         displayedOptions.Add("PageContent");

         printDetailedOptions.OptionChanged += printDetailedOptions_OptionChanged;

         // 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 scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
               {
                     MainPage.Current.NotifyUser("Failed to print.", NotifyType.ErrorMessage);
               });
            }
         };

         sourceRequestedArgs.SetSource(printDocumentSource);
   });
}

Эти параметры появляются в пользовательском интерфейсе предварительного просмотра в порядке их добавления — первый параметр отображается вверху окна. В данном примере настраиваемый параметр добавляется последним, поэтому он отображается в нижней части списка параметров. Однако его можно поместить в любое место списка; необязательно добавлять настраиваемые параметры печати последними.

Когда пользователь изменяет выбранную настройку в вашем настраиваемом параметре, нужно обновить изображение предварительного просмотра. Вызовите метод InvalidatePreview для перерисовки изображения в пользовательском интерфейсе предварительного просмотра, как показано ниже.

async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
{
   // Listen for PageContent changes
   string optionId = args.OptionId as string;
   if (string.IsNullOrEmpty(optionId))
   {
         return;
   }

   if (optionId == "PageContent")
   {
         await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
         {
            printDocument.InvalidatePreview();
         });
   }
}

См. также раздел