博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 之 网页快照 (DrawToBitmap)
阅读量:6254 次
发布时间:2019-06-22

本文共 2108 字,大约阅读时间需要 7 分钟。

一、添加引用

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

 

二、 设置 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 那句会出错。

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

转载地址:http://fejsa.baihongyu.com/

你可能感兴趣的文章
关于文件的存储——windows和Linux比较
查看>>
No1_Web的工作机制
查看>>
ORACLE清理、截断监听日志文件(listener.log)
查看>>
改善系统的通知中心
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>
打开图片选择器并裁减图片取出图片
查看>>
小菜一步一步学数据结构之(六)队列
查看>>
分布式系统(Distributed System)资料
查看>>
HTML对字体的所有操作详解(经典)
查看>>
[译] 全新 Android 注入器 : Dagger 2 (二)
查看>>
vue 地图可视化 maptalks 篇
查看>>
为什么要评审代码?
查看>>
Java并行执行任务的几种方案
查看>>
JavaScript-算法-数组去除重复的元素
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
Netty实战之使用Netty解析交通部JT808协议
查看>>
HTML 基础
查看>>
用Kotlin-koans学Kotlin【三】ii_collections
查看>>
React 源码解析之React.Children
查看>>
Node.js线上服务器部署与发布
查看>>