I'm writing an application using WebView2 in VB.net.
I want to save a screenshot of a certain area displayed in WebView2 to an image using chrome DevTool.
The screenshot of the displayed part was saved successfully.
However, after specifying clip (Viewport), it fails and a pure white image is output.
If you know what's wrong, please let me know
Dim resultJson = Await .CoreWebView2.CallDevToolsProtocolMethodAsync("DOM.getDocument", "{}")
Dim result_viewport_x = Await .ExecuteScriptAsync("document.getElementById(""puzzle-image"").childNodes[0].childNodes[0].getBoundingClientRect().x")
Dim result_viewport_y = Await .ExecuteScriptAsync("document.getElementById(""puzzle-image"").childNodes[0].childNodes[0].getBoundingClientRect().y")
Dim result_viewport_w = Await .ExecuteScriptAsync("document.getElementById(""puzzle-image"").childNodes[0].childNodes[0].getBoundingClientRect().width")
Dim result_viewport_h = Await .ExecuteScriptAsync("document.getElementById(""puzzle-image"").childNodes[0].childNodes[0].getBoundingClientRect().height")
Dim viewport As String = ""
viewport &= "{""x"" : " & result_viewport_x
viewport &= ",""y"" : " & result_viewport_y + 20
viewport &= ",""width"" : " & result_viewport_w
viewport &= ",""height"": " & result_viewport_h - 20
viewport &= ",""scale"" : 1"
viewport &= "}"
Dim param = "{ ""format"" : ""jpeg"" , ""clip"" : " & viewport & " , ""captureBeyondViewport"": True }"
Dim resultJson2 = Await .CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureScreenshot", param)
Dim data = System.Text.Json.JsonSerializer.Deserialize(Of Dictionary(Of String, String))(resultJson2)
Dim newBytes = Convert.FromBase64String(data("data"))
System.IO.File.WriteAllBytes(fileName, newBytes)