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(); }); } }
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); }); }); }
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(); // }); }
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; }
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(); }
private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (ShouldInvalidatePreview(args.OptionId)) { _printDocument.InvalidatePreview(); } }
/// <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); }); }
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); }
private void PrintDic_Paginate(object sender, PaginateEventArgs e) { PrintTaskOptions opt = task.Options; PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions); printDoc.SetPreviewPageCount(1, PreviewPageCountType.Final); }
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); } } }
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)); }
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(); }
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 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); }
/// <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(); }); }
private void PrintDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args) { if (args.OptionId == null) { // Invalidate the preview when switching printers. this.printDocument.InvalidatePreview(); } }
#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(); }); //}); } }
/// <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); }); }
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); } }
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); }
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); }
/// <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); }
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); }
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(); }
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(); }); } }
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; }
/// <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; } }
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); }
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); }); }
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); } }
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] ); }
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(); }
internal PrintTaskOptionDetailsWrapper( PrintTaskOptionDetails details ) { Contract.Requires( details != null ); this.details = details; this.details.OptionChanged += OnOptionChanged; }