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); } } printTask.Options.Binding = _printHelperOptions.Binding == PrintBinding.Default ? printTask.Options.Binding : _printHelperOptions.Binding; printTask.Options.Bordering = _printHelperOptions.Bordering == PrintBordering.Default ? printTask.Options.Bordering : _printHelperOptions.Bordering; printTask.Options.MediaType = _printHelperOptions.MediaType == PrintMediaType.Default ? printTask.Options.MediaType : _printHelperOptions.MediaType; printTask.Options.MediaSize = _printHelperOptions.MediaSize == PrintMediaSize.Default ? printTask.Options.MediaSize : _printHelperOptions.MediaSize; printTask.Options.HolePunch = _printHelperOptions.HolePunch == PrintHolePunch.Default ? printTask.Options.HolePunch : _printHelperOptions.HolePunch; printTask.Options.Duplex = _printHelperOptions.Duplex == PrintDuplex.Default ? printTask.Options.Duplex : _printHelperOptions.Duplex; printTask.Options.ColorMode = _printHelperOptions.ColorMode == PrintColorMode.Default ? printTask.Options.ColorMode : _printHelperOptions.ColorMode; printTask.Options.Collation = _printHelperOptions.Collation == PrintCollation.Default ? printTask.Options.Collation : _printHelperOptions.Collation; printTask.Options.PrintQuality = _printHelperOptions.PrintQuality == PrintQuality.Default ? printTask.Options.PrintQuality : _printHelperOptions.PrintQuality; printTask.Options.Staple = _printHelperOptions.Staple == PrintStaple.Default ? printTask.Options.Staple : _printHelperOptions.Staple; printTask.Options.Orientation = _printHelperOptions.Orientation == PrintOrientation.Default ? printTask.Options.Orientation : _printHelperOptions.Orientation; _printHelperOptions = null; }
/// <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) { if (canvasContainer == null) { throw new ArgumentNullException(); } _printPreviewPages = new List <FrameworkElement>(); _printCanvas = new Canvas(); _printCanvas.Opacity = 0; _canvasContainer = canvasContainer; _elementsToPrint = new List <FrameworkElement>(); _defaultPrintHelperOptions = defaultPrintHelperOptions ?? new PrintHelperOptions(); RegisterForPrinting(); }
/// <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> /// <param name="dispatcherQueue">The DispatcherQueue that should be used to dispatch UI updates, or null if this is being called from the UI thread.</param> public PrintHelper(Panel canvasContainer, PrintHelperOptions defaultPrintHelperOptions = null, DispatcherQueue dispatcherQueue = null) { DispatcherQueue = dispatcherQueue ?? DispatcherQueue.GetForCurrentThread(); if (canvasContainer == null) { throw new ArgumentNullException(); } _printPreviewPages = new List <FrameworkElement>(); _printCanvas = new Canvas(); _printCanvas.Opacity = 0; _canvasContainer = canvasContainer; _canvasContainer.RequestedTheme = ElementTheme.Light; _elementsToPrint = new List <FrameworkElement>(); _defaultPrintHelperOptions = defaultPrintHelperOptions ?? new PrintHelperOptions(); RegisterForPrinting(); }
/// <summary> /// Start 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 AddFrameworkElementToPrint 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)); }