This is an old revision of the document!
using System; using System.Drawing; using System.IO; using System.Threading.Tasks; using System.Windows.Forms; using CefSharp; using CefSharp.WinForms; using CefSharp.DevTools.Emulation; public class MyForm : Form { private ChromiumWebBrowser browser; private Button captureButton; public MyForm() { // 初始化 CEF Cef.Initialize(new CefSettings()); // 創建 ChromiumWebBrowser 控制項 browser = new ChromiumWebBrowser("https://www.example.com") { Dock = DockStyle.Fill }; // 創建截圖按鈕 captureButton = new Button { Text = "捕獲整頁截圖", Dock = DockStyle.Bottom }; captureButton.Click += CaptureButton_Click; // 添加控制項到窗體 this.Controls.Add(browser); this.Controls.Add(captureButton); } private async void CaptureButton_Click(object sender, EventArgs e) { var devToolsClient = browser.GetDevToolsClient(); int width = 1920; // 設置頁面寬度 int height = 1080; // 設置頁面高度 double deviceScaleFactor = 1.0; // 設置縮放比例 bool mobile = false; // 設置為非移動設備 try { // 設置設備度量 await devToolsClient.Emulation.SetDeviceMetricsOverrideAsync(width, height, deviceScaleFactor, mobile, null, null); // 捕獲整頁截圖 var screenshot = await browser.ScreenshotAsync(); // 保存截圖到文件 string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "fullpage_screenshot.png"); using (var stream = new FileStream(filePath, FileMode.Create)) { await screenshot.SaveAsync(stream); } MessageBox.Show($"整頁截圖已保存到: {filePath}"); } catch (Exception ex) { MessageBox.Show($"捕獲截圖時發生錯誤: {ex.Message}"); } finally { // 清除設備度量 await devToolsClient.Emulation.ClearDeviceMetricsOverrideAsync(); } } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new MyForm()); } }
CefSharp.DevTools.Page.PageClient pageClient = null; private async void Test2() { // 由 chrome page body 獲取頁面高度 var pageHeight = await chrome.EvaluateScriptAsync("document.body.scrollHeight"); var pageWidth = await chrome.EvaluateScriptAsync("document.body.scrollWidth"); int height = (int)pageHeight.Result; // 820; // 設置頁面高度 int width = (int)pageWidth.Result; // 820; // 設置頁面高度 long deviceScaleFactor = 1; // 設置縮放比例 bool mobile = false; // 設置為非移動設備 Console.WriteLine("Web Width = " + width.ToString() + ", " + "Height = " + height.ToString()); //var vWindow = CefSharp.DevTools.Emulation.EmulationClient.SetDeviceMetricsOverrideAsync(1200,800,1,true); if (pageClient == null) { await chrome.GetBrowser().GetDevToolsClient().Emulation.SetDeviceMetricsOverrideAsync(width, height, deviceScaleFactor, mobile, null, null); pageClient = chrome.GetBrowser().GetDevToolsClient().Page; } var result = await pageClient.CaptureScreenshotAsync(); if (result.Data != null) { MemoryStream ms = new MemoryStream(result.Data); ms.Write(result.Data, 0, result.Data.Length); Image _Image = Image.FromStream(ms); // _Image.Save("output.png", ImageFormat.Png); } await chrome.GetBrowser().GetDevToolsClient().Emulation.ClearDeviceMetricsOverrideAsync(); }