CefSharp WinForms v104如何正确保存整页截图?
CefSharp WinForms v104 整页网页截图的正确实现方式
你当前通过修改浏览器分辨率来实现整页截图的方式确实存在问题:不仅会导致浏览器界面尺寸临时变化影响体验,还依赖固定延迟等待页面调整,稳定性无法保障。
正确的做法是利用CefSharp集成的DevTools Page API,直接指定fullPage参数来捕获完整页面,无需修改浏览器实际显示尺寸。以下是完整实现代码:
int width = 1024; // 截图的宽度,可根据需求调整 // 获取DevTools客户端 var devToolsClient = chromeBrowser.GetDevToolsClient(); // 调用CaptureScreenshot API,开启fullPage模式 var screenshotParams = new CaptureScreenshotRequest { Format = CaptureScreenshotFormat.Jpeg, Quality = 90, // 图片质量,范围0-100 FullPage = true, Clip = new PageViewport { Width = width, Height = 1 // 开启FullPage时此高度会被忽略,仅需设置宽度 } }; var screenshotData = await devToolsClient.Page.CaptureScreenshotAsync(screenshotParams); // 保存截图到文件 var filePath = @"D:\" + DateTime.Now.Ticks + ".jpg"; await File.WriteAllBytesAsync(filePath, screenshotData);
关键说明:
FullPage = true:这是实现整页截图的核心参数,DevTools会自动滚动页面并拼接完整内容,无需手动调整浏览器尺寸。- 无需
Task.Delay:直接使用API的异步方法,避免依赖固定延迟等待,稳定性更高。 - 参数灵活调整:可通过
Format指定图片格式(Png/Jpeg/Webp),Quality调整Jpeg质量,Clip.Width设置截图宽度。
这种方式既不会影响浏览器的正常显示,也能稳定获取完整的网页截图,是CefSharp官方推荐的整页截图方案。
内容的提问来源于stack exchange,提问作者Elgin Maksim
相关产品推荐
相关产品推荐

