//
<style media="print" type="text/css">
.NoPrint { display:none }
.PageNext { page-break-after: always }
</style>
<script language=javascript>
//利用注测表进行面页设置
var hkey = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet
Explorer\\PageSetup\\";
var RegWsh; //注册表
function pSetup(s1,s2,b1,b2,b3,b4){ //打印页面设置
//本函数无法选择打印机、设置默认纸张大小,请在window的打印设置中处理
if(!RegWsh) RegWsh = new ActiveXObject('WScript.Shell');
try{
RegWsh.RegWrite(hkey+'header', s1); //页眉,默认为:&w&b页码,&p/&P
RegWsh.RegWrite(hkey+'footer', s2); //页脚,默认为:&u&b&d
RegWsh.RegWrite(hkey+'margin_left', b1); //左边距,默认为:0.75
RegWsh.RegWrite(hkey+'margin_right', b2); //右边距,默认为:0.75
RegWsh.RegWrite(hkey+'margin_top', b3); //上边距,默认为:0.75
RegWsh.RegWrite(hkey+'margin_bottom', b4); //下边距,默认为:0.75
}catch(e){alert('页面设置失败。');}
}
//打印、打印预览、页面设置对话框
document.write('<object id="WebBrowser" width=0 height=0 classid=
"clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></object>');
function printSetup() { document.all.WebBrowser.execwb(8,1); } //打印页面设置(对话框方式)
function printPreview(){ document.all.WebBrowser.execwb(7,1); } //打印页面预览
function printIt() { document.all.WebBrowser.execwb(6,6); } //打印
</script>
说明:
(1)、先在网页的head标签中加入以上代码,这段代码由两部分组成:样式表、javascript代码。
(2)、要打印的网页内容全部写在body标签中。
(3)、如果网页中的某些内容不想被打印出来,可以使用NoPrint样式。如:
<body>
<div class=NoPrint>不想被打印的内容</div>
欲打印的网页内容....
</body>
(4)、分页使用PageNext样式,比如在网页中插入 <div class=PageNext></div>
(5)、函数说明
·调用printSetup()函数,显示页面设置窗口
·调用printPreview()函数,打印预览
·调用printIt()函数,打印
·调用pSetup(s1,s2,b1,b2,b3,b4)函数,页面设置。s1页眉,s2页脚,b1、b2、b3、b4分别为左右上下边距。
一、原理
·程序中使用了IE内置的WebBrowser控件,无需用户下载和安装。WebBrowser有很多功能,其中包含了打印功能。
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示
·有时候我们希能够让javascript直接进行“页面设置”,而不是让用户通过对话框进行“页面设置”,这时候可以考虑调用pSetup()实现,此函数通过操作“注册表”实现基本的页面设置功能。不过该函数无法选择打印机、设置默认纸张大小,请在手动在window的打印设置中完成。
·在样式表中,style标签的media属性设置为print,那么这里面的所有样式只在打印时生效。我们称之为“打印样式表”。程序中,在打印样式表中定义一个NoPrint样式,用于隐藏指定部分的网页。PageNext样式则用于分页。
二、页眉页脚问题:
·默认页眉 &w&b页码,&p/&P
·默认页脚 &u&b&d
·各种控制符含义:
&w 网页标题
&u 显示URL
&d 以短格式打印当前日期
&D 以长格式打印当前日期
&t 打印当前时间
&T 以 24 小时制的格式打印当前时间
&p 打印当前页码
&P 打印总页数
&b 右对齐文本(向右推移文本)
&& 打印单个与号 (&) 字符
&b中国&b “中国”二字居中
&b&b中国&b “中国”二字靠右2/3处对齐
三、其它问题
·默认IE设置下,网页背景是不能打印出来的,需要手动设置才行。所以为了保证您获得最佳的打印效果,请调整您的浏览器设置,以IE5.5为例:工具菜单=》Internet选项》高级=》打印背景颜色和图像,打钩起来。
·必须将IE的internet选项的安全设置中对于没有标记为安全的ActiveX控件进行设置成提示或者启用,否则会报错,导致不可用。可以在受信站点中处理。
·浏览器窗口大小与打印页面大小对页面影响的区别:在浏览器窗口中,页面以窗口大小为界,文字在窗口指定的范围内排版,版面溢出部分通过移动滚动条显示出来。打印时,则在“纸张大小”的范围(去除页边距)内排版,横向溢出部分不打印,纵向溢出部分则换页。
四、打印一个表格
(使用背景色制作表格线,应在IE的Internet高级选项中钩上“打印背景颜色和图像”)