Share via


CoreWebView2.PrintAsync(CoreWebView2PrintSettings) Method

Definition

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

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 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, Task<TResult> throws exception. This is only for printing operation on one webview.

ErrorPrintStatusNotes
NoSucceededPrint operation succeeded.
NoPrinterUnavailableIf specified printer is not found or printer status is not available, offline or error state.
NoOtherErrorPrint operation is failed.
ArgumentExceptionOtherErrorIf the caller provides invalid settings for the specified printer.
ExceptionOtherErrorPrint operation is failed as printing job already in progress.

Applies to