CoreWebView2.PrintAsync(CoreWebView2PrintSettings) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Print the current web page asynchronously to the specified printer with the provided settings.
public System.Threading.Tasks.Task<Microsoft.Web.WebView2.Core.CoreWebView2PrintStatus> PrintAsync (Microsoft.Web.WebView2.Core.CoreWebView2PrintSettings printSettings);
member this.PrintAsync : Microsoft.Web.WebView2.Core.CoreWebView2PrintSettings -> System.Threading.Tasks.Task<Microsoft.Web.WebView2.Core.CoreWebView2PrintStatus>
Public Function PrintAsync (printSettings As CoreWebView2PrintSettings) As Task(Of CoreWebView2PrintStatus)
Parameters
- printSettings
- CoreWebView2PrintSettings
Returns
Examples
// Function to get printer name by displaying printer text input dialog to the user.
// User has to specify the desired printer name by querying the installed printers list on the
// OS to print the web page.
// You may also choose to display printers list to the user and return user selected printer.
string GetPrinterName()
{
string printerName = "";
var dialog = new TextInputDialog(
title: "Printer Name",
description: "Specify a printer name from the installed printers list on the OS.",
defaultInput: "");
if (dialog.ShowDialog() == true)
{
printerName = dialog.Input.Text;
}
return printerName;
// or
//
// Use GetPrintQueues() of LocalPrintServer from System.Printing to get list of locally installed printers.
// Display the printer list to the user and get the desired printer to print.
// Return the user selected printer name.
}
// Function to get print settings for the selected printer.
// You may also choose get the capabilities from the native printer API, display to the user to get
// the print settings for the current web page and for the selected printer.
CoreWebView2PrintSettings GetSelectedPrinterPrintSettings(string printerName)
{
CoreWebView2PrintSettings printSettings = null;
printSettings = WebViewEnvironment.CreatePrintSettings();
printSettings.ShouldPrintBackgrounds = true;
printSettings.ShouldPrintHeaderAndFooter = true;
return printSettings;
// or
//
// Get PrintQueue for the selected printer and use GetPrintCapabilities() of PrintQueue from System.Printing
// to get the capabilities of the selected printer.
// Display the printer capabilities to the user along with the page settings.
// Return the user selected settings.
}
// This example prints the current web page to the specified printer with the settings.
async void PrintToPrinter()
{
string printerName = GetPrinterName();
CoreWebView2PrintSettings printSettings = GetSelectedPrinterPrintSettings(printerName);
string title = _iWebView2.CoreWebView2.DocumentTitle;
try
{
CoreWebView2PrintStatus printStatus = await _iWebView2.CoreWebView2.PrintAsync(printSettings);
if (printStatus == CoreWebView2PrintStatus.Succeeded)
{
MessageBox.Show(this, "Printing " + title + " document to printer is succeeded", "Print to printer");
}
else if (printStatus == CoreWebView2PrintStatus.PrinterUnavailable)
{
MessageBox.Show(this, "Selected printer is not found, not available, offline or error state", "Print to printer");
}
else
{
MessageBox.Show(this, "Printing " + title + " document to printer is failed",
"Print");
}
}
catch (ArgumentException)
{
MessageBox.Show(this, "Invalid settings provided for the specified printer",
"Print");
}
catch (Exception)
{
MessageBox.Show(this, "Printing " + title + " document already in progress",
"Print");
}
}
Remarks
See @CoreWebView2PrintSettings for description of settings. Passing null for `printSettings` results in default print settings used.
The method will return @CoreWebView2PrintStatus as @CoreWebView2PrintStatus$.PrinterUnavailable if `printerName` doesn't match with the name of any installed printers on the user OS. The method will throw ArgumentException if the caller provides invalid settings for a given printer.
The async Print operation completes when it finishes printing to the printer. Only one `Printing` operation can be in progress at a time. If `Print` is called while a PrintAsync(CoreWebView2PrintSettings) or PrintToPdfAsync(String, CoreWebView2PrintSettings) or PrintToPdfStreamAsync(CoreWebView2PrintSettings) job is in progress, the IAsyncOperation throws exception. This is only for printing operation on one webview.
| Error | PrintStatus | Notes | | --- | --- | --- | | No | CoreWebView2PrintStatus.Succeeded | Print operation succeeded. | | No | CoreWebView2PrintStatus.PrinterUnavailable | If specified printer is not found or printer status is not available, offline or error state. | | No | CoreWebView2PrintStatus.OtherError | Print operation is failed. | | ArgumentException | CoreWebView2PrintStatus.OtherError | If the caller provides invalid settings for the specified printer. | | Exception | CoreWebView2PrintStatus.OtherError | Print operation is failed as printing job already in progress. |