/// <summary> /// This is the event handler for PrintManager.PrintTaskRequested. /// In order to ensure a good user experience, the system requires that the app handle the PrintTaskRequested event within the time specified by PrintTaskRequestedEventArgs.Request.Deadline. /// Therefore, we use this handler to only create the print task. /// The print settings customization can be done when the print document source is requested. /// </summary> /// <param name="sender">PrintManager</param> /// <param name="e">PrintTaskRequestedEventArgs</param> 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("PageRange", "Page Range"); pageFormat.AddItem("PrintAll", "Print all"); pageFormat.AddItem("PrintSelection", "Print Selection"); pageFormat.AddItem("PrintRange", "Print Range"); // Add the custom option to the option list displayedOptions.Add("PageRange"); // Create new edit option PrintCustomTextOptionDetails pageRangeEdit = printDetailedOptions.CreateTextOption("PageRangeEdit", "Range"); // Register the handler for the option change event printDetailedOptions.OptionChanged += printDetailedOptions_OptionChanged; // Register the handler for the PrintTask.Completed event. // Print Task event handler is invoked when the print job is completed. printTask.Completed += async(s, args) => { pageRangeEditVisible = false; selectionMode = false; pageList.Clear(); // Notify the user when the print operation fails. if (args.Completion == PrintTaskCompletion.Failed) { await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { LogHelper.Log(LogLevel.Error, "Failed to print."); }); } await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { // Restore first page to its default layout. // Undo any changes made by a text selection. ShowContent(null); }); }; sourceRequestedArgs.SetSource(printDocumentSource); }); }
void OnPrintManagerPrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args) { PrintTask printTask = args.Request.CreatePrintTask("The Tale of Tom Kitten", OnPrintTaskSourceRequested); // Get PrintTaskOptionDetails for making changes to options PrintTaskOptionDetails optionDetails = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options); // Create the custom item PrintCustomItemListOptionDetails pageRange = optionDetails.CreateItemListOption("idPrintRange", "Print range"); pageRange.AddItem("idPrintAll", "Print all pages"); pageRange.AddItem("idPrintCustom", "Print custom range"); // Add it to the options optionDetails.DisplayedOptions.Add("idPrintRange"); // Create a page-range edit item also, but this only // comes into play when user selects "Print custom range" optionDetails.CreateTextOption("idCustomRangeEdit", "Custom Range"); // Set a handler for the OptionChanged event optionDetails.OptionChanged += OnOptionDetailsOptionChanged; }
void OnPrintManagerPrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args) { PrintTask printTask = args.Request.CreatePrintTask("Dependency Property Class Hierarchy", (requestArgs) => { requestArgs.SetSource(printDocumentSource); }); PrintTaskOptionDetails optionDetails = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options); // Add item for font size optionDetails.CreateTextOption("idFontSize", "Font size (in points)"); optionDetails.DisplayedOptions.Add("idFontSize"); optionDetails.Options["idFontSize"].TrySetValue((72 * fontSize / 96).ToString()); // Add items for page margins optionDetails.CreateTextOption("idLeftMargin", "Left margin (in inches)"); optionDetails.DisplayedOptions.Add("idLeftMargin"); optionDetails.Options["idLeftMargin"].TrySetValue((leftMargin / 96).ToString()); optionDetails.CreateTextOption("idTopMargin", "Top margin (in inches)"); optionDetails.DisplayedOptions.Add("idTopMargin"); optionDetails.Options["idTopMargin"].TrySetValue((topMargin / 96).ToString()); optionDetails.CreateTextOption("idRightMargin", "Right margin (in inches)"); optionDetails.DisplayedOptions.Add("idRightMargin"); optionDetails.Options["idRightMargin"].TrySetValue((rightMargin / 96).ToString()); optionDetails.CreateTextOption("idBottomMargin", "Bottom margin (in inches)"); optionDetails.DisplayedOptions.Add("idBottomMargin"); optionDetails.Options["idBottomMargin"].TrySetValue((bottomMargin / 96).ToString()); // Set handler for the option changing optionDetails.OptionChanged += OnOptionDetailsOptionChanged; }
/// <summary> /// This is the event handler for PrintManager.PrintTaskRequested. /// </summary> /// <param name="sender">PrintManager</param> /// <param name="e">PrintTaskRequestedEventArgs </param> private static void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e) { PrintTask printTask = null; printTask = e.Request.CreatePrintTask("Notepads", sourceRequestedArgs => { var deferral = sourceRequestedArgs.GetDeferral(); PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options); 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(StandardPrintTaskOptions.Orientation); displayedOptions.Add(StandardPrintTaskOptions.Copies); displayedOptions.Add(StandardPrintTaskOptions.MediaSize); displayedOptions.Add(StandardPrintTaskOptions.InputBin); // Add Margin setting in % options PrintCustomTextOptionDetails leftMargin = printDetailedOptions.CreateTextOption("LeftMargin", _resourceLoader.GetString("Print_LeftMarginEntry_Title")); PrintCustomTextOptionDetails topMargin = printDetailedOptions.CreateTextOption("TopMargin", _resourceLoader.GetString("Print_TopMarginEntry_Title")); leftMargin.Description = topMargin.Description = _resourceLoader.GetString("Print_MarginEntry_Description"); leftMargin.TrySetValue(Math.Round(100 * _applicationContentMarginLeft, 1).ToString()); topMargin.TrySetValue(Math.Round(100 * _applicationContentMarginTop, 1).ToString()); displayedOptions.Add("LeftMargin"); displayedOptions.Add("TopMargin"); // Add Header and Footer text options PrintCustomTextOptionDetails headerText = printDetailedOptions.CreateTextOption("HeaderText", _resourceLoader.GetString("Print_HeaderEntry_Title")); PrintCustomTextOptionDetails footerText = printDetailedOptions.CreateTextOption("FooterText", _resourceLoader.GetString("Print_FooterEntry_Title")); headerText.TrySetValue(_headerText); footerText.TrySetValue(_footerText); displayedOptions.Add("HeaderText"); displayedOptions.Add("FooterText"); displayedOptions.Add(StandardPrintTaskOptions.CustomPageRanges); displayedOptions.Add(StandardPrintTaskOptions.Duplex); displayedOptions.Add(StandardPrintTaskOptions.Collation); //displayedOptions.Add(StandardPrintTaskOptions.NUp); displayedOptions.Add(StandardPrintTaskOptions.MediaType); displayedOptions.Add(StandardPrintTaskOptions.Bordering); //displayedOptions.Add(StandardPrintTaskOptions.ColorMode); displayedOptions.Add(StandardPrintTaskOptions.PrintQuality); displayedOptions.Add(StandardPrintTaskOptions.HolePunch); displayedOptions.Add(StandardPrintTaskOptions.Staple); // Preset the default value of the printer option printTask.Options.MediaSize = PrintMediaSize.Default; 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 CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { NotificationCenter.Instance.PostNotification(_resourceLoader.GetString("Print_NotificationMsg_PrintFailed"), 1500); }); } }; sourceRequestedArgs.SetSource(_printDocumentSource); deferral.Complete(); }); }