【问题标题】:How to save a complete webpage using the built-in webbrowser in c#如何使用 C# 中的内置 webbrowser 保存完整的网页
【发布时间】:2011-03-01 07:03:36
【问题描述】:

总的来说,我正在尝试将网页写成 PDF。我可以使用一个网络服务将文件转换为 pdf。所以我想做的是从 WebBrowser winforms 控件中保存一个网页。

我已经尝试将它写出文档流,但这只是给我页面的 html 而不是与它一起使用的图像。

我研究过但没有成功的另一种方法是尝试创建 WebBrowser 文档的图像。我在网上找到了一些利用 DrawToBitmap 函数的示例,但没有一个对我有用。

任何帮助将不胜感激。

【问题讨论】:

标签: c# .net visual-studio-2010 browser


【解决方案1】:

很久以前,我偶然发现了这篇 CodeProject-article 'Capture an HTML document as an image'

但是,有一个新的(发布时间:2010 年 2 月 13 日)'HTML to Image in C#'

我没有测试过它们中的任何一个,但我认为它们应该可以工作!

【讨论】:

    【解决方案2】:

    要创建 PDF,您使用的程序将需要网站的源代码。无论您使用 WebBrowser winforms 控件还是其他东西来获取该信息,都没有真正的区别。

    此代码将为您获取任何网站的源代码,假设您不需要先上传东西:

    string url = "some site";
    string source = string.Empty;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    using(StreamReader sr = new StreamReader(response.GetResponseStream()){
        source = sr.ReadToEnd();
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用Graphics.CopyFromScreen 功能截取整个页面。

      // Get screen location of web browser
      Rectangle rec = webBrowser1.RectangleToScreen(webBrowser1.ClientRectangle);
      // create image to hold whats in view
      Bitmap image = new Bitmap(rec.Width, rec.Height);
      // get graphics to draw on image
      Graphics g = Graphics.FromImage(image);
      // Save into image
      // From MSDN:
      //public void CopyFromScreen(
      //    int sourceX,
      //    int sourceY,
      //    int destinationX,
      //    int destinationY,
      //    Size blockRegionSize
      //)
      g.CopyFromScreen(rec.X,rec.Y,0,0,rec.Size)
      

      您可能还想删除滚动条,以免它们出现在您的图像中:

      webBrowser.ScrollBarsEnabled = false;
      webBrowser.Document.Body.Style = "overflow:hidden;";
      

      然后向下滚动以拍摄下一页:

      webBrowser.Document.Window.ScrollTo(x,y);
      

      【讨论】:

        猜你喜欢
        • 2012-06-22
        • 2014-03-16
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 2013-01-09
        • 2014-03-09
        相关资源
        最近更新 更多