js中点击按钮将html页面导出成图片

JavaScript010

js中点击按钮将html页面导出成图片,第1张

一、添加引用

在解决方案上单击右键,选择“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)

}

}

}

按照以下步骤来:

1、获取当前日期

2、生成日期字符串

3、显示

准备好一张数字的图片:

【代码】

<style type="text/css">

/* css */

.num_0, .num_1, .num_2, .num_3, .num_4, .num_5, .num_6, .num_7, .num_8, .num_9 { background:url(numbers.gif) no-repeat 0 0 display:inline-block width:40px height:40px }

.num_1 { background-position:-40px 0 }

.num_2 { background-position:-80px 0 }

.num_3 { background-position:-120px 0 }

.num_4 { background-position:-160px 0 }

.num_5 { background-position:-200px 0 }

.num_6 { background-position:-240px 0 }

.num_7 { background-position:-280px 0 }

.num_8 { background-position:-320px 0 }

.num_9 { background-position:-360px 0 }

</style>

<div id="dis"></div>

<script>

var date=new Date(),

    str=''+date.getFullYear()+(date.getMonth()+1)+date.getDate(),

    i=0,

    len=str.length,

    html=[]

for( i<len i++)

  html.push('<span class="num_'+str[i]+'">&nbsp</span>')

document.getElementById('dis').innerHTML=html.join('')

</script>

【运行】

运行后,js代码会添加一些元素到页面上,会生成如图所示的结构:

看下页面显示效果:

显示是通过样式表完成的。

可以。前端生成大量图片短时间内上千张,造成浏览器卡死是不可避免的,js可以生成1000张图片。JavaScript简称JS 是一种具有函数优先的轻量级,解释型或即时编译型的,高级编程语言。