• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET之网页快照(DrawToBitmap)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、添加引用

  在解决方案上单击右键,选择“Add Reference...”,添加“System.Windows.Forms”,添加完后,Web.Config 中应该有类似下面的内容:

<system.web>
   <compilation debug="true">
     <assemblies>
       <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

 

二、 设置 STA 模式

在 @ Page 指令中加上 AspCompat="true",以强制该网页在 STA(单线程单元) 模式下执行。结果类似如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" AspCompat="true" %>

 

三、写截图代码

using System;
 using System.Collections;
 using System.Configuration;
 using System.Data;
 using System.Web;
 using System.Web.Security;
 using System.Web.UI;
 using System.Web.UI.HtmlControls;
 using System.Web.UI.WebControls;
 using System.Web.UI.WebControls.WebParts;
using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; public partial class _Default : System.Web.UI.Page { private WebBrowser _webBrowser; protected void Page_Load(object sender, EventArgs e) { string url = Request.QueryString["url"]; if (string.IsNullOrEmpty(url)) { url = "http://www.cftea.com/"; } _webBrowser = new WebBrowser(); _webBrowser.ScrollBarsEnabled = false; //不显示滚动条 _webBrowser.Navigate(url); _webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Completed); while (_webBrowser.ReadyState != WebBrowserReadyState.Complete) { System.Windows.Forms.Application.DoEvents(); //避免假死,若去掉则可能无法触发 DocumentCompleted 事件。 } }
public void Completed(object sender, WebBrowserDocumentCompletedEventArgs e) { //设置浏览器宽度、高度为文档宽度、高度,以便截取整个网页。 _webBrowser.Width = _webBrowser.Document.Body.ScrollRectangle.Width; _webBrowser.Height = _webBrowser.Document.Body.ScrollRectangle.Height; using (Bitmap bmp = new Bitmap(_webBrowser.Width, _webBrowser.Height)) { _webBrowser.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height)); bmp.Save("C:\\Capture.png", ImageFormat.Png); } } }

 

四、说明

  在调试时,若出错,应该停止 ASP.NET Development Server,重新运行,如果你用的是 IIS,可能需要重新启动 IIS(猜测是这样),否则 Navigate 那句会出错。

有些网站抓下来是空白,还没有仔细研究过为什么。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
处理Asp.netAjax框架12029,12007错误发布时间:2022-07-10
下一篇:
Asp.Net Forums与现有系统整合方案示例发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap