| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1525 人关注过本帖
标题:IE浏览器自带的打印控件来完成Web打印
只看楼主 加入收藏
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
结帖率:0
收藏
 问题点数:0 回复次数:0 
IE浏览器自带的打印控件来完成Web打印

利用IE浏览器实现

现在我们来看看怎样利用IE浏览器自带的打印控件来完成Web打印。大家都知道IE本身就具有强大的打印功能,
那么我们为什么不利用这一点来实现Web打印功能呢。原因是如果我们直接使用IE的打印功能或是在程序中调
用window.print()来打印网页,那么在页眉部分会出现网页标题和页码信息,而在页脚部分则会出现网址和
日期信息。其实这些信息并不是我们想要打印的,那么怎样才能去掉这些信息呢?做法其实很简单,我们只
要在IE的文件菜单中打开页面设置对话框,然后去掉页眉和页脚的代码(页眉:&w&b页码,&p/&P 页脚:&u&b&d)
就可以了,现在我们再打印的话这些信息就不会出现了。现在我们来看看这些代码是什么意思呢?其实这些代码
是IE提供给我们设置打印页面的,下面给出它们的具体含义,如表所示。


通过上面的表格,读者应该明白IE打印设置中默认的页眉和页脚的含义,而且读者可以对上述代码进行组合使用
来设置自己喜欢的打印设置。这里我们所要说的并不单单是这些,大家设想一下我们开发了一个基于B/S结构的
系统,其中有报表的部分,我们不能让每个客户端都自己去设置IE的打印设置,因此我们需要在程序中控制这些
设置。下面我们用VBScript脚本写一个函数通过修改注册表键值来达到控制页面设置的目的,代码如下:

< script language="VBScript">

dim path, reg

'path存放IE打印设置的注册表地址, reg存放WScript.Shell组件的对象

path = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup"


'通过注册表修改打印设置,只修改页眉、页脚和各边界的值

'参数说明:header--页眉,footer--页脚,margin_left--左边界

'margin_top--上边界,margin_right--右边界,margin_bottom--下边界

'页边距的设置中 1对应25.4mm,即margin_left=1表示实际值的25.4mm

function pagesetup(header, footer, margin_left, margin_top, margin_right, margin_bottom)

On Error Resume Next

Set reg = CreateObject("WScript.Shell")

if err.Number>0 then

MsgBox "不能创建WScript.Shell对象!"

exit function

end if

reg.RegWrite path+"\header","" '设置页眉

reg.RegWrite path+"\footer","" '设置页脚


reg.RegWrite path+"\margin_left", margin_left'设置左边界

reg.RegWrite path+"\margin_top", margin_top'设置上边界

reg.RegWrite path+"\margin_right", margin_right'设置右边界

reg.RegWrite path+"\margin_bottom", margin_bottom'设置下边界

end function

< /script>

程序中可以再写一个函数(可用VBscript或javascript脚本写)先调用该函数,然后再调用window.print()实现打印,
这里就不给出代码了。细心的读者一定发现了这样打印出来的页面会有打印按钮在上面,而且分页是IE打印控件根据纸
张大小分出来的,下面我们介绍一种方法来控制分页和打印按钮的显示。该方法是利用CSS样式表来控制这些设置,
因为在样式表中有一个“media=print”属性,该属性只有在打印的时候才会起作用,因此可以实现对打印按钮和
分页的控制,具体做法如下:

< style media=print>

.noprint{display:none;}

.pagenext{page-break-after: always;}

< /style>

只要在打印按钮中加入代码class="noprint",而在需要分页的地方加入代码< div class="pagenext">< /div>就可以了。
到目前为止我们的打印功能已经比较完善了,但是还没有打印预览和直接打印的功能,一般用户在打印之前都会预览一下,
如果没有问题就直接打印了。下面我们通过IEWebBrowser组件来实现这两个功能。

首先创建IEWebBrowser对象:

< object id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 width=0 height=0>< /object >

然后通过不同参数调用ExecWB方法实现打印预览和直接打印功能:

WebBrowser.ExecWB(6,1); //打印

WebBrowser.ExecWB(6,6); //直接打印

WebBrowser.ExecWB(7,1); //打印预览

搜索更多相关主题的帖子: 浏览器 控件 Web 打印 
2007-01-04 17:54
快速回复:IE浏览器自带的打印控件来完成Web打印
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017779 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved