保存WebBrowser网页全部内容到图片:

bool firstRun = true;
/// <summary>
/// 调用方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSvae_Click(object sender, EventArgs e)
{
    firstRun = true;
    //动态创建WebBrowser可改变WebBrowser大小
    WebBrowser webBrowser = new WebBrowser();
    webBrowser.Navigate(@"https://heardtao.com");
    webBrowser.ScriptErrorsSuppressed = false;  //禁用脚本错误
    webBrowser.ScrollBarsEnabled = false;  //禁用滚动条
    webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
}
/// <summary>
///  网页加载完成事件处理函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (!firstRun) return;  //可能页面内含有多次请求,只执行一次
    WebBrowser webBrowser = (WebBrowser)sender;

    // 确认页面加载完毕
    while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }
    // 页面加载完毕进行保存
    if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
    {

        // 获取页面大小,可手动设置
        int width = webBrowser.Document.Body.ScrollRectangle.Width < 1024 ? 1024 : webBrowser.Document.Body.ScrollRectangle.Width;
        int height = webBrowser.Document.Body.ScrollRectangle.Height < 768 ? 768 : webBrowser.Document.Body.ScrollRectangle.Height;

        // webBrowser大小调整为与页面一致  (需动态创建webBrowser方可修改)
        webBrowser.Height = height;
        webBrowser.Width = width;

        //滚动整个网页 截取网页滚动条中的内容
        webBrowser.Document.Body.ScrollIntoView(true);
        Bitmap bitmap = new Bitmap(width, height);  // 创建大小与网页相同的图片
        Rectangle rectangle = new Rectangle(0, 0, width, height);
        webBrowser.DrawToBitmap(bitmap, rectangle);  // 利用webBrowser自带DrawToBitmap转为图片

        // 保存图片对话框
        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.Filter = "JPEG (*.jpg)|*.jpg|PNG (*.png)|*.png";
        saveFileDialog.ShowDialog();

        bitmap.Save(saveFileDialog.FileName);  // 保存图片
    }
    firstRun = false;
}
Last modification:July 26th, 2019 at 02:11 pm
如果觉得我的文章对你有用,请随意赞赏