/// <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;
        }
示例#4
0
        /// <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();
            });
        }