浏览器网页打印
1. 前言
客户对于一些插件比较敏感,如金融、银行等出于安全的考虑和产品的把控,可能不愿意页面打印的时候,客户端浏览器安装插件。(当然,用户有各种各样的需求和打印格式要求,愿意使用打印控件的,开发的打印功能当然很好。)
所以直接使用浏览器自带的打印功能,就成为一个选择。
2. 打印功能介绍
2.1 普通打印
如果要将当前网页的内容直接打印到白纸上,很简单,使用如下js代码即可实现。
window.print);
2.2 打印指定区域
2.2.1 简单打印某一区域
如果只需要简单打印当前网页的某一块内容,不难实现。先使要打印的那一块获得焦点,然后打印即可,代码如下:
document.getElementById'要打印的区域id').focus);
window.print);
Jetbrains全家桶1年46,售后保障稳定
2.2.2使用css控制某一部分不打印
当然,使用css来控制某一区域不打印,也是很方便的。
代码如下(红色部分是关键)。该样式,在浏览的时候可以正常显示,只是打印的时候不打印class为noprint的元素。
<style type="text/css" media="print">
.noprint{ display : none }
</style>
2.3套打
如果用户已经有打印表格,只需要你打印数据内容上去,就是所谓的套打。
你当然可以设计一个只有要打印的数据项的表格,然后通过css来控制元素的位置和字体等格式。也可以结合 2.2.2 的描述将不需要打印的部分隐藏,这样更便于你的打印预览调试。
2.4 iframe打印
如果你的打印格式比较复杂,在现有页面通过上边介绍的方式实现起来比较麻烦,那就干脆使用iframe打印吧。那样你只需要提前画好一个页面,在要打印的时候使用js将内容或者模板页面路径传给iframe即可。
代码如下:
window.frames[‘printFrm’].location.href = “页面路径”;
setTimeout“printAction)”,“1000”);//为防止页面未加载完就打印,延迟一秒
function printAction){
window.frames[‘printFrm’].focus);
window.frames[‘printFrm’].print);
}
如果不希望iframe被看到,就像下边这样,将高度设置为0吧
当然,如果需要自己来控制页边距、页眉、页脚等,可以先按 1.6 中描述方式进行设置。
WEB打印如何设置默认为”仅选定打印框架”?
function printAction){
window.frames[‘printFrm’].focus);
window.frames[‘printFrm’].print);
}
2.5 修改浏览器打印设置
在打印的时候,你可能希望由自己来控制页边距、页眉、页脚等。可以按如下方式,在打印前进行相应的设置(注:由于使用了ActiveXObject,需要进行相应的浏览器安全设置,将浏览器安全设置中有关“ActiveX控件和插件”下的相关限制放开,当然,这样做不是很安全。可以将系统访问地址设置为“受信任的站点”,在“受信任的站点”的自定义级别中放开相应限制,这就比较妥当了。)。
function setPrint){
var hkey_root,hkey_path,hkey_key;
hkey_root=“HKEY_CURRENT_USER”;
hkey_path=”\Software\Microsoft\Internet Explorer\PageSetup\”;
//设置网页打印的页眉页脚为空
try{
var RegWsh = new ActiveXObject“WScript.Shell”);
//设置页眉为空
hkey_key=“header” ;
RegWsh.RegWritehkey_root+hkey_path+hkey_key,””);
//设置页脚为空
hkey_key=“footer”;
RegWsh.RegWritehkey_root+hkey_path+hkey_key,””);//设置下页边距(0)
hkey_key=“margin_bottom”;
RegWsh.RegWritehkey_root+hkey_path+hkey_key,“0”); //设置左页边距(0)
hkey_key=“margin_left”;
RegWsh.RegWritehkey_root+hkey_path+hkey_key,“0”);
//设置右页边距(0)
hkey_key=“margin_right”;
RegWsh.RegWritehkey_root+hkey_path+hkey_key,“0”);
//设置上页边距(0)
hkey_key=“margin_top”;
RegWsh.RegWritehkey_root+hkey_path+hkey_key,“0”);
}catche){
alert‘请将本系统地址加入”受信任的站点”,否则打印格式可能会不正确!’);
}
}
2.6 需要分页的地方加上一行代码:
-
Activex 控件件打印
如果控件无法弹出生效,可能是IE的安全策略的问题。
可以修改IE的ActiveX 的安全项
或者如下代码写到程序中。
try{var WshShell=new ActiveXObject“WScript.Shell”);
//添加信任站点http://127.0.0.1) WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges\\Range100\\",""); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges\\Range100\\:Range","127.0.0.1"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges\\Range100\\http","2","REG_DWORD"); //修改IE ActiveX安全设置: 1本地Intranet区域 WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\04","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\00","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\05","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); //修改IE ActiveX安全设置:2受信任的站点区域 WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\04","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\00","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\05","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); //修改IE ActiveX安全设置:3Internet区域 WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\04","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\00","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\05","0","REG_DWORD"); WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\01","0","REG_DWORD"); //禁用Winxp弹出窗口阻止程序 WshShell.RegWrite"HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\New Windows\\PopupMgr","no"); }catche){ //alert"不允许ActiveX控件"); }