一个不错的WEB打印解决方案!
2010-04-08 21:03
387 查看
前段时间做项目时,因为需要用到WEB打印,原来是想用水晶报表的,但由于生成的数据比较麻烦(由多张表并且经过多次计算才生成),因此就想上网找一下有没更好更方便的办法。其实最好的办法就是可以直接打印当前页面需要的内容,这样就不用再去考虑数据源的问题了,所有操作都在客户端实现。
网上的方法一般都是使用样式控制页面所需打印部分,于都在同一页面内控制,所以这样打出来的效果也不好看,而且也不便于控制,于是我就想到将需要打印的内容直接传到另一个页面,然后再在那个页面里进行打印操作,因为是一个新的页面,所以可以很方便去控制需要的样式,只要将所有打印的连接都用此页面进行操作就可以了,这样打出来的效果就可以完全与页面内容一样(包括样式),当然,前提是必须在IE高级设置里将“打印背景图像”一选项打开,否则只能打印前景色。
此方法最终也是调用WebBrowser控件进行的,所以还必须要求客户端IE打开“对没有标记为安全的ActiveX控件进行初始化和脚本运行”的选项,这是使用此方法的唯一一个缺点! <!-- 设置打印区域,ID为Content1 -->
<div id="Content1">
<table width="647" height="74" border="0" cellpadding="1" bgcolor="#000000">
<tr>
<td height="18" bgcolor="#0099FF"><div align="center"><span class="STYLE1">编号</span></div></td>
<td bgcolor="#0099FF"><div align="center"><span class="STYLE1">姓名</span></div></td>
<td bgcolor="#0099FF"><div align="center"><span class="STYLE1">年龄</span></div></td>
</tr>
<tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr>
<tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr>
</table>
</div>
2、增加一个打印按钮:
<input type="button" value=" 打 印 " onclick="OpenPrint();" id="Printf" />
3、增加JS方法:(其实就打开另一个新的打印页面)
<script>
//打印方法,直接开另一新页面然后将当前页面打印区传过去
function OpenPrint()
</script>
4、在新建一个Print.htm页面,获取父页面的内容,并且打印出来
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<!-- 要保留打印区域的样式,此页面的样式必需与父页面的一样 -->
</script>
<body style="background-color:White; background-image:url(nono.jpg); ">
<!--注册打印控件-->
<object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object>
<!--设置打印标题-->
<div id="title" class="STYLE4">
</div>
<br />
<!--设置打印的内容-->
<div id="print">
</div>
</body>
</html>
完成!
网上的方法一般都是使用样式控制页面所需打印部分,于都在同一页面内控制,所以这样打出来的效果也不好看,而且也不便于控制,于是我就想到将需要打印的内容直接传到另一个页面,然后再在那个页面里进行打印操作,因为是一个新的页面,所以可以很方便去控制需要的样式,只要将所有打印的连接都用此页面进行操作就可以了,这样打出来的效果就可以完全与页面内容一样(包括样式),当然,前提是必须在IE高级设置里将“打印背景图像”一选项打开,否则只能打印前景色。
此方法最终也是调用WebBrowser控件进行的,所以还必须要求客户端IE打开“对没有标记为安全的ActiveX控件进行初始化和脚本运行”的选项,这是使用此方法的唯一一个缺点! <!-- 设置打印区域,ID为Content1 -->
<div id="Content1">
<table width="647" height="74" border="0" cellpadding="1" bgcolor="#000000">
<tr>
<td height="18" bgcolor="#0099FF"><div align="center"><span class="STYLE1">编号</span></div></td>
<td bgcolor="#0099FF"><div align="center"><span class="STYLE1">姓名</span></div></td>
<td bgcolor="#0099FF"><div align="center"><span class="STYLE1">年龄</span></div></td>
</tr>
<tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr>
<tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr> <tr>
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
</tr>
</table>
</div>
2、增加一个打印按钮:
<input type="button" value=" 打 印 " onclick="OpenPrint();" id="Printf" />
3、增加JS方法:(其实就打开另一个新的打印页面)
<script>
//打印方法,直接开另一新页面然后将当前页面打印区传过去
function OpenPrint()
</script>
4、在新建一个Print.htm页面,获取父页面的内容,并且打印出来
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<!-- 要保留打印区域的样式,此页面的样式必需与父页面的一样 -->
</script>
<body style="background-color:White; background-image:url(nono.jpg); ">
<!--注册打印控件-->
<object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object>
<!--设置打印标题-->
<div id="title" class="STYLE4">
</div>
<br />
<!--设置打印的内容-->
<div id="print">
</div>
</body>
</html>
完成!
相关文章推荐
- 一个不错的WEB打印解决方案!
- 一个不错的WEB打印解决方案!
- 分享一个不错的web弹窗层解决方案layer
- 非常不错的Web打印解决方案
- 给大家看一个可以web可以指定打印机的打印
- layer(全称:jQuery-plugin-layer),一个可以让你想到即可做到的web弹窗(层)解决方案(js组件)非常好的层效果
- 一起谈.NET技术,在MVC2.0使用Lodop为WEB打印提出完美解决方案
- VS中一个解决方案有多个Web网站.如何不启动全部asp.net development server(WEB服务器)
- 在web服务器上,有些pdf, 怎么让用户在页面上点击一个按钮,就直接打印?
- WEB打印设置解决方案四(在ASP中实现网络打印功能)
- 由一个“两次请求”引出的Web服务器跨域请求访问问题的解决方案
- 如何使用一个不错的图表组件WebChart(免费)
- WEB程序需要打印格式页面时解决方案汇总
- 个人觉得一个不错的架构组合FreeMarker+webwork+hibernate+Spring
- WEB打印设置解决方案
- 表格在WEB打印时,边框线是细线解决方案
- iphoneX,push进入一个webview, 页面底部出现一个黑色区域解决方案
- Web打印的解决方案之证件套打
- 一个不错的游戏 - flash webgame
- 记录一个不错的web在线开发教程网