using System; using System.Threading; using System.Windows.Forms; using Microsoft.Web.WebView2.Core; using Microsoft.Web.WebView2.WinForms; namespace ConsoleApp1 { internal class Program { [STAThread] static void Main(string[] args) { var filePath = "C:\\Temp\\test.pdf"; var printerName = "Microsoft Print to PDF"; Console.WriteLine("Initialize WebView2 ..."); var webView2 = new WebView2(); var createEnvironmentTask = CoreWebView2Environment.CreateAsync(); while (!createEnvironmentTask.IsCompleted) { Application.DoEvents(); } var environment = createEnvironmentTask.Result; var initTask = webView2.EnsureCoreWebView2Async(environment); while (!initTask.IsCompleted) { Application.DoEvents(); } if (initTask.IsFaulted) { Console.WriteLine(initTask.Exception?.ToString()); Console.ReadKey(); } Console.WriteLine(" ... done."); Console.WriteLine("SDK version: " + webView2.ProductVersion); Console.WriteLine("Browser Version: " + webView2.CoreWebView2.Environment.BrowserVersionString); Console.WriteLine($"Navigate to file '{filePath}' ..."); var navigationCompletedEvent = new ManualResetEventSlim(false); webView2.CoreWebView2.NavigationCompleted += (sender, eventArgs) => { navigationCompletedEvent.Set(); Console.WriteLine(" - NavigationCompleted"); }; webView2.CoreWebView2.Navigate(filePath); while (!navigationCompletedEvent.IsSet) { Application.DoEvents(); } Console.WriteLine(" ... done."); Console.WriteLine("Sleep ..."); Thread.Sleep(500); Console.WriteLine(" ... done."); Console.WriteLine("Create print settings ..."); CoreWebView2PrintSettings printSettings = null; printSettings = webView2.CoreWebView2.Environment.CreatePrintSettings(); printSettings.PrinterName = printerName; printSettings.Copies = 1; printSettings.Duplex = CoreWebView2PrintDuplex.OneSided; printSettings.Orientation = CoreWebView2PrintOrientation.Portrait; printSettings.PageHeight = 11.7; // A4 in inch printSettings.PageWidth = 8.3; // A4 in inch printSettings.MarginTop = 0.5; printSettings.MarginBottom = 0.5; printSettings.MarginLeft = 0.5; printSettings.MarginRight = 0.5; Console.WriteLine(" ... done."); Console.WriteLine($"Print file to printer '{printerName}' ..."); var printTask = webView2.CoreWebView2.PrintAsync(printSettings); while (!printTask.IsCompleted) { Application.DoEvents(); } var printStatus = printTask.Result; Console.WriteLine(" ... done."); Console.WriteLine("Print status: " + printStatus); webView2.Dispose(); } } }