我已经下载了Minimalexample.Offscreen的示例。这是我用于截屏的代码,但我没有获取到完整页面。图片被裁剪(只拍摄可见页面的截图)。
// c# code
var scriptTask = browser.EvaluateScriptAsync("document.getElementById('lst-ib').value = 'CefSharp Was Here!'");
scriptTask.ContinueWith(t =>
{
Thread.Sleep(500);
var task = browser.ScreenshotAsync();
task.ContinueWith(x =>
{
var screenshotPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "CefSharp screenshot.png");
Console.WriteLine();
Console.WriteLine("Screenshot ready. Saving to {0}", screenshotPath);
task.Result.Save(screenshotPath);
task.Result.Dispose();
Console.WriteLine("Screenshot saved. Launching your default image viewer...");
Process.Start(screenshotPath);
Console.WriteLine("Image viewer launched. Press any key to exit.");
}, TaskScheduler.Default);
}).Wait();
如何使用CefSharp offscreen或CefSharp WinForms获取完整的长页面截图?
async/await
?没有支持 Task 但不支持async/await
的 .NET 版本(提示)。这将使您的代码更清晰,并避免因未执行Dispose
调用而导致泄漏。正如 此讨论所示,您的页面可能没有完全加载,因此ScreenshotAsync
只捕获了第一帧。 - Panagiotis Kanavos