コード例 #1
0
        private async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            var invalidatePreview = false;

            switch (args.OptionId)
            {
            case "LayoutOption":

                switch (sender.Options["LayoutOption"].Value as string)
                {
                case "Center":
                    this.printLayout = PrintPanel.LayoutOption.Centered;
                    break;

                case "AlignLeftOrTop":
                    this.printLayout = PrintPanel.LayoutOption.AlignLeftOrTop;
                    break;

                case "AlignRightOrBottom":
                    this.printLayout = PrintPanel.LayoutOption.AlignRightOrBottom;
                    break;
                }

                invalidatePreview = true;
                break;
            }

            if (invalidatePreview)
            {
                await this.caller.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    this.printDocument.InvalidatePreview();
                });
            }
        }
コード例 #2
0
        protected virtual void PrintTaskRequested(PrintManager sender,
                                                  PrintTaskRequestedEventArgs e)
        {
            Task = e.Request.CreatePrintTask(PrintTitle, async sourceRequested =>
            {
                PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(Task.Options);

                printDetailedOptions.DisplayedOptions.Clear();
                printDetailedOptions.DisplayedOptions.Add(StandardPrintTaskOptions.Copies);

                Task.Options.Orientation = PrintOrientation.Portrait;

                Task.Completed += async(s, args) =>
                {
                    if (args.Completion == PrintTaskCompletion.Failed)
                    {
                        await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                        {
                            Debug.WriteLine("Failed to print.");
                        });
                    }
                };

                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    sourceRequested.SetSource(PrintDoc?.DocumentSource);
                });
            });
        }
コード例 #3
0
        private async void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            System.Diagnostics.Debug.WriteLine(args.OptionId);
            CoreApplicationView newView = CoreApplication.CreateNewView();
            int newViewId = 0;
            await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                Frame frame = new Frame();
                frame.Navigate(typeof(SecondaryPage), null);
                Window.Current.Content = frame;
                // You have to activate the window in order to show it later.
                Window.Current.Activate();

                newViewId = ApplicationView.GetForCurrentView().Id;
            });

            //bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);

            //await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
            //    async  () =>
            //      {
            //          //ContentDialogPage dialog = new ContentDialogPage();
            //          //await dialog.ShowAsync();

            //      });
        }
コード例 #4
0
        private void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
        {
            PrintTask printTask = null;

            printTask = e.Request.CreatePrintTask(this.title, sourceRequested =>
            {
                sourceRequested.SetSource(this.printDocumentSource);
            });

            var printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);
            var displayedOptions     = printDetailedOptions.DisplayedOptions;

            var alignOption = printDetailedOptions.CreateItemListOption("LayoutOption", "Layout Option");

            alignOption.AddItem("Center", "Center");
            alignOption.AddItem("AlignLeftOrTop", "Align to the Left or to the Top");
            alignOption.AddItem("AlignRightOrBottom", "Align to the right or to the bottom");

            this.printLayout = PrintPanel.LayoutOption.Centered;
            displayedOptions.Clear();

            displayedOptions.Add(StandardPrintTaskOptions.Copies);
            displayedOptions.Add("LayoutOption");
            displayedOptions.Add(StandardPrintTaskOptions.MediaSize);
            displayedOptions.Add(StandardPrintTaskOptions.Orientation);
            displayedOptions.Add(StandardPrintTaskOptions.ColorMode);
            displayedOptions.Add(StandardPrintTaskOptions.PrintQuality);

            printDetailedOptions.OptionChanged += this.PrintDetailedOptions_OptionChanged;
        }
コード例 #5
0
        private void Printmgr_PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args)
        {
            //从参数的Request属性中获取与PrintTaskRequest的任务关联
            //创建好打印内容和任务后 在调用Complete方法进行打印
            var deferral = args.Request.GetDeferral();

            // 创建打印任务
            task            = args.Request.CreatePrintTask("Print", OnPrintTaskSourceRequrested);
            task.Completed += PrintTask_Completed;

            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(task.Options);
            IList <string>         displayedOptions     = printDetailedOptions.DisplayedOptions;
            //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;


            deferral.Complete();
        }
コード例 #6
0
 private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
 {
     if (ShouldInvalidatePreview(args.OptionId))
     {
         _printDocument.InvalidatePreview();
     }
 }
コード例 #7
0
        /// <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);
            });
        }
コード例 #8
0
        private void PrintDic_Paginate(object sender, PaginateEventArgs e)
        {
            PrintTaskOptions opt = task.Options;
            // 根据页面的方向来调整打印内容的旋转方向
            //switch (opt.Orientation)
            //{
            //    case PrintOrientation.Default:
            //        rottrf.Angle = 0d;
            //        break;
            //    case PrintOrientation.Portrait:
            //        rottrf.Angle = 0d;
            //        break;
            //    case PrintOrientation.Landscape:
            //        rottrf.Angle = 90d;
            //        break;
            //}
            // 设置预览页面的总页数
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);
            string pageContent = (printDetailedOptions.Options["PageContent"].Value as string).ToLowerInvariant();

            // Set the text & image display flag
            imageText = (DisplayContent)((Convert.ToInt32(pageContent.Contains("pictures")) << 1) | Convert.ToInt32(pageContent.Contains("text")));


            printDoc.SetPreviewPageCount(1, PreviewPageCountType.Final);
        }
コード例 #9
0
        private void PrintDic_Paginate(object sender, PaginateEventArgs e)
        {
            PrintTaskOptions       opt = task.Options;
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);

            printDoc.SetPreviewPageCount(1, PreviewPageCountType.Final);
        }
コード例 #10
0
        private void PrintDocument_Print(CanvasPrintDocument sender, CanvasPrintEventArgs args)
        {
            var detailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(args.PrintTaskOptions);
            var pageRange       = detailedOptions.Options["PageRange"].Value.ToString();

            int pageCountToPrint;

            if (pageRange == "PrintFirstPage")
            {
                pageCountToPrint = 1;
            }
            else
            {
                pageCountToPrint = pageCount;
            }

            for (uint i = 1; i <= pageCountToPrint; ++i)
            {
                using (var ds = args.CreateDrawingSession())
                {
                    var imageableRect = args.PrintTaskOptions.GetPageDescription(i).ImageableRect;

                    DrawPage(sender, ds, i, imageableRect);
                }
            }
        }
コード例 #11
0
        private static T GetOptionValue <T>(PrintTaskOptionDetails printDetailedOptions) where T : struct
        {
            Type   type  = typeof(T);
            string value = (string)printDetailedOptions.Options[type.Name].Value;

            return((T)Enum.Parse(type, value));
        }
コード例 #12
0
        async void OnPrintDocumentPrintTaskRequested(PrintManager sender,
                                                     PrintTaskRequestedEventArgs args)
        {
            PrintTaskRequestedDeferral deferral = args.Request.GetDeferral();

            // Obtain PrintTask
            PrintTask printTask = args.Request.CreatePrintTask("Finger Paint",
                                                               OnPrintTaskSourceRequested);

            // Probably set orientation to landscape
            PrintTaskOptionDetails optionDetails =
                PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);

            PrintOrientationOptionDetails orientation =
                optionDetails.Options[StandardPrintTaskOptions.Orientation] as
                PrintOrientationOptionDetails;

            bool bitmapIsLandscape = false;

            await border.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                BitmapSource bitmapSource = getBitmap();
                bitmapIsLandscape         = bitmapSource.PixelWidth > bitmapSource.PixelHeight;
            });

            orientation.TrySetValue(bitmapIsLandscape ? PrintOrientation.Landscape :
                                    PrintOrientation.Portrait);

            deferral.Complete();
        }
コード例 #13
0
        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;
        }
コード例 #14
0
        void OnPrintDocumentPaginate(object sender, PaginateEventArgs args)
        {
            // Obtain the print range option
            PrintTaskOptionDetails optionDetails =
                PrintTaskOptionDetails.GetFromPrintTaskOptions(args.PrintTaskOptions);

            string strValue = optionDetails.Options["idPrintRange"].Value as string;

            if (strValue == "idPrintCustom")
            {
                // Parse the print range for GetPreviewPage and AddPages
                string strPageRange = optionDetails.Options["idCustomRangeEdit"].Value as string;
                customPageRange = new CustomPageRange(strPageRange, bookPages.Length);
            }
            else
            {
                // Make sure field is null if printing all pages
                customPageRange = null;
            }

            int pageCount = bookPages.Length;

            if (customPageRange != null && customPageRange.IsValid)
            {
                pageCount = customPageRange.PageMapping.Count;
            }

            printDocument.SetPreviewPageCount(pageCount, PreviewPageCountType.Final);
        }
コード例 #15
0
        /// <summary>
        /// This is the event handler for PrintManager.PrintTaskRequested.
        /// </summary>
        /// <param name="sender">PrintManager</param>
        /// <param name="e">PrintTaskRequestedEventArgs </param>
        protected virtual void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
        {
            PrintTask printTask = null;

            printTask = e.Request.CreatePrintTask(JobName, async sourceRequestedArgs =>
            {
                var deferral = sourceRequestedArgs.GetDeferral();

                PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);
                IList <string> displayedOptions             = printTask.Options.DisplayedOptions;
                displayedOptions.Clear();
                displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Copies);
                displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Orientation);
                displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.PrintQuality);
                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.NorthAmericaLetter;

                // Create a new list option
                PrintCustomItemListOptionDetails margins = printDetailedOptions.CreateItemListOption("Margins", "Margins");
                margins.AddItem("WideMargins", "Wide", "Each margin is 20% of the paper size", null);
                margins.AddItem("ModerateMargins", "Moderate", "Each margin is 10% of the paper size", null);
                margins.AddItem("NarrowMargins", "Narrow", "Each margin is 5% of the paper size", null);
                // The default is ModerateMargins
                ApplicationContentMarginTop  = 0.1;
                ApplicationContentMarginLeft = 0.1;
                margins.TrySetValue("ModerateMargins");

                // App tells the user some more information about what the feature means.
                margins.Description = "The space between the content of your document and the edge of the paper";

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

                printDetailedOptions.OptionChanged += OnPrintDetailOptionChanged;

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

                sourceRequestedArgs.SetSource(printDocumentSource);

                deferral.Complete();
            });
        }
コード例 #16
0
 private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
 {
     if (args.OptionId == null)
     {
         // Invalidate the preview when switching printers.
         this.printDocument.InvalidatePreview();
     }
 }
コード例 #17
0
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
        async void OnPrintDetailOptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
        {
            bool invalidatePreview = false;

            string optionId = args.OptionId as string;

            if (string.IsNullOrEmpty(optionId))
            {
                return;
            }

            if (optionId == "Margins")
            {
                PrintCustomItemListOptionDetails marginsOption = (PrintCustomItemListOptionDetails)sender.Options["Margins"];
                string marginsValue = marginsOption.Value.ToString();

                switch (marginsValue)
                {
                case "WideMargins":
                    ApplicationContentMarginTop  = 0.2;
                    ApplicationContentMarginLeft = 0.2;
                    break;

                case "ModerateMargins":
                    ApplicationContentMarginTop  = 0.1;
                    ApplicationContentMarginLeft = 0.1;
                    break;

                case "NarrowMargins":
                    ApplicationContentMarginTop  = 0.05;
                    ApplicationContentMarginLeft = 0.05;
                    break;
                }

                if (marginsValue == "NarrowMargins")
                {
                    marginsOption.WarningText = "Narrow margins may not be supported by some printers";
                }
                else
                {
                    marginsOption.WarningText = "";
                }

                invalidatePreview = true;
            }

            if (invalidatePreview)
            {
                //await PrintPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                //{
                Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
                {
                    printDocument.InvalidatePreview();
                });
                //});
            }
        }
コード例 #18
0
        /// <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">The print manager for which a print task request was made.</param>
        /// <param name="e">The print taks request associated arguments.</param>
        protected override void PrintTaskRequested(Windows.Graphics.Printing.PrintManager sender, Windows.Graphics.Printing.PrintTaskRequestedEventArgs e)
        {
            PrintTask printTask = null;

            printTask = e.Request.CreatePrintTask("Printing Coloring Page", sourceRequestedArgs =>
            {
                PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);

                // 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
                printDetailedOptions.DisplayedOptions.Clear();
                printDetailedOptions.DisplayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.MediaSize);
                printDetailedOptions.DisplayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Copies);

                // Create a new list option.
                PrintCustomItemListOptionDetails photoSize = printDetailedOptions.CreateItemListOption("photoSize", "Photo Size");
                photoSize.AddItem("SizeFullPage", "Full Page");
                photoSize.AddItem("Size4x6", "4 x 6 in");
                photoSize.AddItem("Size5x7", "5 x 7 in");
                photoSize.AddItem("Size8x10", "8 x 10 in");

                // Add the custom option to the option list.
                printDetailedOptions.DisplayedOptions.Add("photoSize");

                PrintCustomItemListOptionDetails scaling = printDetailedOptions.CreateItemListOption("scaling", "Scaling");
                scaling.AddItem("ShrinkToFit", "Shrink To Fit");
                scaling.AddItem("Crop", "Crop");

                // Add the custom option to the option list.
                printDetailedOptions.DisplayedOptions.Add("scaling");

                // Set default orientation to landscape.
                printTask.Options.Orientation = PrintOrientation.Landscape;

                // Register for print task option changed notifications.
                printDetailedOptions.OptionChanged += PrintDetailedOptionsOptionChanged;

                // Register for print task Completed notification.
                // Print Task event handler is invoked when the print job is completed.
                printTask.Completed += async(s, args) =>
                {
                    await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        ClearPageCollection();

                        // Reset image options to default values.
                        this.photoScale = Scaling.ShrinkToFit;
                        this.photoSize  = PhotoSize.SizeFullPage;

                        // Reset the current page description
                        currentPageDescription = null;
                    });
                };

                // Set the document source.
                sourceRequestedArgs.SetSource(printDocumentSource);
            });
        }
コード例 #19
0
        public static void DebugPrintTaskOptionDetails(this PrintTaskOptions options)
        {
            var optionDetails = PrintTaskOptionDetails.GetFromPrintTaskOptions(options);

            foreach (var option in optionDetails.Options)
            {
                Debug.WriteLine("{0} - {1}", option.Key, option.Value.Value);
            }
        }
コード例 #20
0
        private void PrintDocument_Preview(CanvasPrintDocument sender, CanvasPreviewEventArgs args)
        {
            PrintTaskOptions       options = args.PrintTaskOptions;
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(options);
            Rect          imageableRect = GetImageableRect(options, args.PageNumber);
            GraphSize     size          = GetOptionValue <GraphSize>(printDetailedOptions);
            LabelLocation labelLocation = GetOptionValue <LabelLocation>(printDetailedOptions);

            DrawPage(args.DrawingSession, imageableRect, size, labelLocation);
        }
コード例 #21
0
        private void PrintDic_Paginate(object sender, PaginateEventArgs e)
        {
            PrintTaskOptions       opt = task.Options;
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);
            string pageContent = (printDetailedOptions.Options["PageContent"].Value as string).ToLowerInvariant();

            // Set the text & image display flag
            imageText = (DisplayContent)((Convert.ToInt32(pageContent.Contains("pictures")) << 1) | Convert.ToInt32(pageContent.Contains("text")));
            printDoc.SetPreviewPageCount(1, PreviewPageCountType.Final);
        }
コード例 #22
0
        /// <summary>
        /// This is the event handler for PrintDocument.Paginate. It creates print preview pages for the app.
        /// </summary>
        /// <param name="sender">PrintDocument</param>
        /// <param name="e">Paginate Event Arguments</param>
        protected override void CreatePrintPreviewPages(object sender, PaginateEventArgs e)
        {
            base.CreatePrintPreviewPages(sender, e);

            PrintTaskOptionDetails      printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);
            PrintPageRangeOptionDetails pageRangeOption      = (PrintPageRangeOptionDetails)printDetailedOptions.Options[StandardPrintTaskOptions.CustomPageRanges];

            // The number of pages may have been changed, so validate the Page Ranges again
            ValidatePageRangeOption(pageRangeOption);
        }
コード例 #23
0
ファイル: ScenarioInput4.xaml.cs プロジェクト: ckc/WinApp
        protected override void CreatePrintPreviewPages(object sender, PaginateEventArgs e)
        {
            // Get PageContent property
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);
            string pageContent = (printDetailedOptions.Options["PageContent"].Value as string).ToLowerInvariant();

            // Set the text & image display flag
            imageText = (DisplayContent)((Convert.ToInt32(pageContent.Contains("pictures")) << 1) | Convert.ToInt32(pageContent.Contains("text")));

            base.CreatePrintPreviewPages(sender, e);
        }
コード例 #24
0
        private void Printmgr_PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args)
        {
            var deferral = args.Request.GetDeferral();

            task = args.Request.CreatePrintTask("Print", OnPrintTaskSourceRequrested);
            //task.Completed += PrintTask_Completed;
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(task.Options);

            printDetailedOptions.OptionChanged += PrintDetailedOptions_OptionChanged;
            deferral.Complete();
        }
コード例 #25
0
        async void OnOptionDetailsOptionChanged(PrintTaskOptionDetails sender,
                                                PrintTaskOptionChangedEventArgs args)
        {
            if (args.OptionId == null)
            {
                return;
            }

            string optionId  = args.OptionId.ToString();
            string strValue  = sender.Options[optionId].Value.ToString();
            string errorText = String.Empty;
            double value     = 0;

            switch (optionId)
            {
            case "idFontSize":
                if (!Double.TryParse(strValue, out value))
                {
                    errorText = "Value must be numeric";
                }

                else if (value < 4 || value > 36)
                {
                    errorText = "Value must be between 4 and 36";
                }
                break;

            case "idLeftMargin":
            case "idTopMargin":
            case "idRightMargin":
            case "idBottomMargin":
                if (!Double.TryParse(strValue, out value))
                {
                    errorText = "Value must be numeric";
                }

                else if (value < 0 || value > 2)
                {
                    errorText = "Value must be between 0 and 2";
                }
                break;
            }

            sender.Options[optionId].ErrorText = errorText;

            // If there's no error, then invalidate the preview
            if (String.IsNullOrEmpty(errorText))
            {
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    printDocument.InvalidatePreview();
                });
            }
        }
コード例 #26
0
        protected virtual void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
        {
            PrintTask printTask = e.Request.CreatePrintTask("BlueYonder", sourceRequested => sourceRequested.SetSource(_printDocumentSource));
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);

            printDetailedOptions.DisplayedOptions.Clear();
            printDetailedOptions.DisplayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Copies);
            printDetailedOptions.DisplayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Orientation);
            printDetailedOptions.DisplayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.ColorMode);

            printDetailedOptions.OptionChanged += printDetailedOptions_OptionChanged;
        }
コード例 #27
0
 /// <summary>
 /// Removes the PageRange edit from the charm window
 /// </summary>
 /// <param name="printTaskOptionDetails">Details regarding PrintTaskOptions</param>
 private void RemovePageRangeEdit(PrintTaskOptionDetails printTaskOptionDetails)
 {
     if (pageRangeEditVisible)
     {
         string lastDisplayedOption = printTaskOptionDetails.DisplayedOptions.FirstOrDefault(p => p.Contains("PageRangeEdit"));
         if (!string.IsNullOrEmpty(lastDisplayedOption))
         {
             printTaskOptionDetails.DisplayedOptions.Remove(lastDisplayedOption);
         }
         pageRangeEditVisible = false;
     }
 }
コード例 #28
0
        async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
        {
            // Listen for PageContent changes
            string optionId = args.OptionId as string;

            if (string.IsNullOrEmpty(optionId))
            {
                return;
            }

            await rootPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, printDocument.InvalidatePreview);
        }
コード例 #29
0
 private void DataGrid_PrintTaskRequested(object sender, DataGridPrintTaskRequestedEventArgs e)
 {
     e.PrintTask = e.Request.CreatePrintTask("Printing", sourceRequested =>
     {
         PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTask.Options);
         IList <string> displayedOptions             = printDetailedOptions.DisplayedOptions;
         displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.CustomPageRanges);
         e.PrintTask.Options.PageRangeOptions.AllowCurrentPage      = true;
         e.PrintTask.Options.PageRangeOptions.AllowAllPages         = true;
         e.PrintTask.Options.PageRangeOptions.AllowCustomSetOfPages = true;
         sourceRequested.SetSource(e.PrintDocumentSource);
     });
 }
コード例 #30
0
        private void PrintDocument_Print(CanvasPrintDocument sender, CanvasPrintEventArgs args)
        {
            PrintTaskOptions       options = args.PrintTaskOptions;
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(options);
            Rect          imageableRect = GetImageableRect(options, pageNumber: 1);
            GraphSize     size          = GetOptionValue <GraphSize>(printDetailedOptions);
            LabelLocation labelLocation = GetOptionValue <LabelLocation>(printDetailedOptions);

            using (CanvasDrawingSession drawingSession = args.CreateDrawingSession())
            {
                DrawPage(drawingSession, imageableRect, size, labelLocation);
            }
        }
コード例 #31
0
        private void OnOptionChanged( PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs e )
        {
            var optionId = e.OptionId.ToString();
            Action<IPrintCustomOptionDetails> textOptionCallback;

            // try text options first
            if ( textCallbacks.TryGetValue( optionId, out textOptionCallback ) )
            {
                textOptionCallback( (IPrintCustomOptionDetails) sender.Options[optionId] );
                return;
            }

            Action<IPrintItemListOptionDetails> listOptionCallback;

            // then try list options
            if ( listCallbacks.TryGetValue( optionId, out listOptionCallback ) )
                listOptionCallback( (IPrintItemListOptionDetails) sender.Options[optionId] );
        }
コード例 #32
0
        private void Dispose( bool disposing )
        {
            if ( disposed )
                return;

            disposed = true;

            if ( !disposing )
                return;

            if ( details != null )
            {
                details.OptionChanged -= OnOptionChanged;
                details = null;
            }

            if ( listCallbacks != null )
                listCallbacks.Clear();

            if ( textCallbacks != null )
                textCallbacks.Clear();
        }
コード例 #33
0
 internal PrintTaskOptionDetailsWrapper( PrintTaskOptionDetails details )
 {
     Contract.Requires( details != null );
     this.details = details;
     this.details.OptionChanged += OnOptionChanged;
 }