private static async Task <UIPrintInteractionController> PopulateCommonPrinterDetailsAsync( PrintJobConfiguration printJobConfiguration) { UIPrintInteractionController printer = UIPrintInteractionController.SharedPrintController; if (printer is null) { await PrintStatusReporting.ReportErrorAsync( CrossPrinting.PrintingMessages.UnableToPrintAtThisTime); } else { printer.PrintInfo = UIPrintInfo.PrintInfo; if (!(printer.PrintInfo is null)) { if (!(printJobConfiguration is null)) { switch (printJobConfiguration.DuplexPreference) { case PrintJobDuplexConfiguration.LongEdge: printer.PrintInfo.Duplex = UIPrintInfoDuplex.LongEdge; break; case PrintJobDuplexConfiguration.ShortEdge: printer.PrintInfo.Duplex = UIPrintInfoDuplex.ShortEdge; break; case PrintJobDuplexConfiguration.None: default: printer.PrintInfo.Duplex = UIPrintInfoDuplex.None; break; } printer.PrintInfo.JobName = printJobConfiguration.JobName; printer.PrintInfo.Orientation = printJobConfiguration.PreferPortraitOrientation ? UIPrintInfoOrientation.Portrait : UIPrintInfoOrientation.Landscape; printer.PrintInfo.OutputType = printJobConfiguration.PreferColor ? UIPrintInfoOutputType.General : UIPrintInfoOutputType.Grayscale; } } printer.ShowsPageRange = true; } return(printer); }
/// <summary> /// /// </summary> /// <returns>true if no immediate errors detected, false if an immediate error detected. Note that a true return value does not mean that printing completed successfully, just that it didn't fail immediately</returns> protected async Task <bool> RegisterForPrintingAsync() { try { _printDocument = new Windows.UI.Xaml.Printing.PrintDocument(); _printDocumentSource = _printDocument.DocumentSource; _printDocument.Paginate += CreatePrintPreviewPages; _printDocument.GetPreviewPage += GetPrintPreviewPage; _printDocument.AddPages += AddPrintPages; #if DEBUG IncrementAddPagesCount(); IncrementGetPreviewPageCount(); IncrementPaginateCount(); #endif _printManager = Windows.Graphics.Printing.PrintManager.GetForCurrentView(); if (!(_printManager is null)) { PrintManagerHelper.Instance.SetPrintTaskRequestedHandler( _printManager, PrintTaskRequested); return(true); } } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception ex) { await PrintStatusReporting.ReportExceptionAsync(ex); } #pragma warning restore CA1031 // Do not catch general exception types if (!(_printDocument is null)) { _printDocument.Paginate -= CreatePrintPreviewPages; _printDocument.GetPreviewPage -= GetPrintPreviewPage; _printDocument.AddPages -= AddPrintPages; } #if DEBUG DecrementPaginateCount(); DecrementGetPreviewPageCount(); DecrementAddPagesCount(); #endif await PrintStatusReporting.ReportErrorAsync( CrossPrinting.PrintingMessages.FailedToRegisterForPrinting); return(false); }