} // End Sub ConvertDataAsync private static async System.Threading.Tasks.Task ClosePage(MasterDevs.ChromeDevTools.IChromeSession chromeSession, string frameId, bool headLess) { System.Threading.Tasks.Task <MasterDevs.ChromeDevTools.CommandResponse <CloseTargetCommandResponse> > closeTargetTask = chromeSession.SendAsync( new CloseTargetCommand() { TargetId = frameId } ); // await will block forever if headless if (!headLess) { MasterDevs.ChromeDevTools.CommandResponse <CloseTargetCommandResponse> closeTargetResponse = await closeTargetTask; System.Console.WriteLine(closeTargetResponse); } else { System.Console.WriteLine(closeTargetTask); } } // End Task ClosePage
} // End Function ConnectToChrome public static async System.Threading.Tasks.Task ConvertDataAsync(ConversionData conversionData) { #if false Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); #endif MasterDevs.ChromeDevTools.IChromeSessionFactory chromeSessionFactory = new MasterDevs.ChromeDevTools.ChromeSessionFactory(); using (ConnectionInfo connectionInfo = await ConnectToChrome(conversionData.ChromePath, conversionData.RemoteDebuggingUri)) { MasterDevs.ChromeDevTools.IChromeSession chromeSession = chromeSessionFactory.Create(connectionInfo.SessionInfo.WebSocketDebuggerUrl); // STEP 3 - Send a command // // Here we are sending a commands to tell chrome to set the viewport size // and navigate to the specified URL await chromeSession.SendAsync(new SetDeviceMetricsOverrideCommand { Width = conversionData.ViewPortWidth, Height = conversionData.ViewPortHeight, Scale = 1 }); MasterDevs.ChromeDevTools.CommandResponse <NavigateCommandResponse> navigateResponse = await chromeSession.SendAsync(new NavigateCommand { // Url = "http://www.google.com" Url = "about:blank" }); System.Console.WriteLine("NavigateResponse: " + navigateResponse.Id); MasterDevs.ChromeDevTools.CommandResponse <SetDocumentContentCommandResponse> setContentResponse = await chromeSession.SendAsync(new SetDocumentContentCommand() { FrameId = navigateResponse.Result.FrameId, Html = conversionData.Html } ); // private static double cm2inch(double centimeters) { return centimeters * 0.0393701; } UnitConversion_t cm2inch = delegate(double centimeters) { return(centimeters * 0.393701); }; // private static double mm2inch(double milimeters) { return milimeters * 0.0393701; } UnitConversion_t mm2inch = delegate(double milimeters) { return(milimeters * 0.0393701); }; PrintToPDFCommand printCommand2 = new PrintToPDFCommand() { Scale = 1, MarginTop = 0, MarginLeft = 0, MarginRight = 0, MarginBottom = 0, PrintBackground = true, Landscape = false, // PaperWidth = cm2inch(21), // PaperHeight = cm2inch(29.7), // PaperWidth = cm2inch(conversionData.PageWidth), // PaperHeight = cm2inch(conversionData.PageHeight) PaperWidth = mm2inch(conversionData.PageWidth), PaperHeight = mm2inch(conversionData.PageHeight) }; // await System.Threading.Tasks.Task2.Delay(300); if (conversionData.ChromiumActions.HasFlag(ChromiumActions_t.GetVersion)) { try { System.Diagnostics.Debug.WriteLine("Getting browser-version"); MasterDevs.ChromeDevTools.CommandResponse <GetVersionCommandResponse> version = await chromeSession.SendAsync(new GetVersionCommand()); System.Diagnostics.Debug.WriteLine("Got browser-version"); conversionData.Version = version.Result; } catch (System.Exception ex) { conversionData.Exception = ex; System.Diagnostics.Debug.WriteLine(ex.Message); } } // End if (conversionData.ChromiumActions.HasFlag(ChromiumActions_t.GetVersion)) if (conversionData.ChromiumActions.HasFlag(ChromiumActions_t.ConvertToImage)) { try { System.Diagnostics.Debug.WriteLine("Taking screenshot"); MasterDevs.ChromeDevTools.CommandResponse <CaptureScreenshotCommandResponse> screenshot = await chromeSession.SendAsync(new CaptureScreenshotCommand { Format = "png" }); System.Diagnostics.Debug.WriteLine("Screenshot taken."); conversionData.PngData = System.Convert.FromBase64String(screenshot.Result.Data); } catch (System.Exception ex) { conversionData.Exception = ex; System.Diagnostics.Debug.WriteLine(ex.Message); } } // End if (conversionData.ChromiumActions.HasFlag(ChromiumActions_t.ConvertToImage)) if (conversionData.ChromiumActions.HasFlag(ChromiumActions_t.ConvertToPdf)) { try { System.Diagnostics.Debug.WriteLine("Printing PDF"); MasterDevs.ChromeDevTools.CommandResponse <PrintToPDFCommandResponse> pdf = await chromeSession.SendAsync(printCommand2); System.Diagnostics.Debug.WriteLine("PDF printed."); conversionData.PdfData = System.Convert.FromBase64String(pdf.Result.Data); } catch (System.Exception ex) { conversionData.Exception = ex; System.Diagnostics.Debug.WriteLine(ex.Message); } } // End if (conversionData.ChromiumActions.HasFlag(ChromiumActions_t.ConvertToPdf)) System.Console.WriteLine("Closing page"); await ClosePage(chromeSession, navigateResponse.Result.FrameId, true); System.Console.WriteLine("Page closed"); } // End Using connectionInfo } // End Sub ConvertDataAsync