/// <summary> /// Initializes a new instance of the <see cref="PrintHelper"/> class. /// </summary> /// <param name="canvasContainer">XAML panel used to attach printing canvas. Can be hidden in your UI with Opacity = 0 for instance</param> /// <param name="defaultPrintHelperOptions">Default settings for the print tasks</param> public PrintHelper(Panel canvasContainer, PrintHelperOptions defaultPrintHelperOptions = null) { _canvasContainer = canvasContainer ?? throw new ArgumentNullException(); _canvasContainer.RequestedTheme = ElementTheme.Light; _printPreviewPages = new List <FrameworkElement>(); _printCanvas = new Canvas { Opacity = 0 }; _elementsToPrint = new List <FrameworkElement>(); _defaultPrintHelperOptions = defaultPrintHelperOptions ?? new PrintHelperOptions(); RegisterForPrinting(); }
private void ApplyPrintSettings(PrintTask printTask) { _printHelperOptions = _printHelperOptions ?? _defaultPrintHelperOptions; IEnumerable <string> displayedOptionsToAdd = _printHelperOptions.DisplayedOptions; if (!_printHelperOptions.ExtendDisplayedOptions) { printTask.Options.DisplayedOptions.Clear(); } foreach (var displayedOption in displayedOptionsToAdd) { if (!printTask.Options.DisplayedOptions.Contains(displayedOption)) { printTask.Options.DisplayedOptions.Add(displayedOption); } } if (printTask.Options.Binding != PrintBinding.NotAvailable) { printTask.Options.Binding = _printHelperOptions.Binding == PrintBinding.Default ? printTask.Options.Binding : _printHelperOptions.Binding; } if (printTask.Options.Bordering != PrintBordering.NotAvailable) { printTask.Options.Bordering = _printHelperOptions.Bordering == PrintBordering.Default ? printTask.Options.Bordering : _printHelperOptions.Bordering; } if (printTask.Options.MediaType != PrintMediaType.NotAvailable) { printTask.Options.MediaType = _printHelperOptions.MediaType == PrintMediaType.Default ? printTask.Options.MediaType : _printHelperOptions.MediaType; } if (printTask.Options.MediaSize != PrintMediaSize.NotAvailable) { printTask.Options.MediaSize = _printHelperOptions.MediaSize == PrintMediaSize.Default ? printTask.Options.MediaSize : _printHelperOptions.MediaSize; } if (printTask.Options.HolePunch != PrintHolePunch.NotAvailable) { printTask.Options.HolePunch = _printHelperOptions.HolePunch == PrintHolePunch.Default ? printTask.Options.HolePunch : _printHelperOptions.HolePunch; } if (printTask.Options.Duplex != PrintDuplex.NotAvailable) { printTask.Options.Duplex = _printHelperOptions.Duplex == PrintDuplex.Default ? printTask.Options.Duplex : _printHelperOptions.Duplex; } if (printTask.Options.ColorMode != PrintColorMode.NotAvailable) { printTask.Options.ColorMode = _printHelperOptions.ColorMode == PrintColorMode.Default ? printTask.Options.ColorMode : _printHelperOptions.ColorMode; } if (printTask.Options.Collation != PrintCollation.NotAvailable) { printTask.Options.Collation = _printHelperOptions.Collation == PrintCollation.Default ? printTask.Options.Collation : _printHelperOptions.Collation; } if (printTask.Options.PrintQuality != PrintQuality.NotAvailable) { printTask.Options.PrintQuality = _printHelperOptions.PrintQuality == PrintQuality.Default ? printTask.Options.PrintQuality : _printHelperOptions.PrintQuality; } if (printTask.Options.Staple != PrintStaple.NotAvailable) { printTask.Options.Staple = _printHelperOptions.Staple == PrintStaple.Default ? printTask.Options.Staple : _printHelperOptions.Staple; } if (printTask.Options.Orientation != PrintOrientation.NotAvailable) { printTask.Options.Orientation = _printHelperOptions.Orientation == PrintOrientation.Default ? printTask.Options.Orientation : _printHelperOptions.Orientation; } _printHelperOptions = null; }
/// <summary> /// Starts the print task. /// </summary> /// <param name="printTaskName">Name of the print task to use</param> /// <param name="printHelperOptions">Settings for the print task</param> /// <param name="directPrint">Directly print the content of the container instead of relying on list built with <see cref="AddFrameworkElementToPrint(FrameworkElement)"/> method</param> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> public Task ShowPrintUIAsync(string printTaskName, PrintHelperOptions printHelperOptions, bool directPrint = false) { _printHelperOptions = printHelperOptions; return(ShowPrintUIAsync(printTaskName, directPrint)); }