2022年2022年浏览器打印经验总结 .pdf
js 调用浏览器打印(可设置页眉、页脚、页边距)前言打印需求, 在系统的开发中非常常见。面对用户各种各样的打印格式要求,如果有好用的打印控件, 开发打印功能自然无需多说。但是如果没有, 直接使用浏览器自带的打印功能,也是一个不错的选择。下面就分享一下我自己在开发过程中,使用浏览器自带功能的一些经验。1 打印功能介绍1.1 普通打印如果要将当前网页的内容直接打印到白纸上,很简单,使用如下js 代码即可实现。window.print(); 1.2 打印指定区域1.2.1 简单打印某一区域如果只需要简单打印当前网页的某一块内容,不难实现。先使要打印的那一块获得焦点,然后打印即可,代码如下:document.getElementById( 要打印的区域id).focus(); window.print(); 1.2.2 使用 css控制某一部分不打印当然,使用css来控制某一区域不打印,也是很方便的。代码如下( 红色部分是关键) 。该样式,在浏览的时候可以正常显示,只是打印的时候不打印class为noprint的元素。.noprint display : none 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 1.3 套打如果用户已经有打印表格,只需要你打印数据内容上去,就是所谓的套打。你当然可以设计一个只有要打印的数据项的表格,然后通过 css来控制元素的位置和字体等格式。也可以结合1.2.2 的描述将不需要打印的部分隐藏,这样更便于你的打印预览调试。1.5iframe打印如果你的打印格式比较复杂,在现有页面通过上边介绍的方式实现起来比较麻烦,那就干脆使用iframe打印吧。那样你只需要提前画好一个页面,在要打印的时候使用js将内容或者模板页面路径传给iframe即可。代码如下:window.framesprintFrm.location.href = 页面路径 ; setTimeout(printAction(), 1000);/为防止页面未加载完就打印,延迟一秒function printAction()window.framesprintFrm.focus(); window.framesprintFrm.print(); 如果不希望iframe被看到,就像下边这样,将高度设置为0吧 当然,如果需要自己来控制页边距、页眉、 页脚等, 可以先按 1.6中描述方式进行设置。1.6 修改浏览器打印设置在打印的时候,你可能希望由自己来控制页边距、页眉、页脚等。可以按如下方式,在打印前进行相应的设置(注:由于使用了ActiveXObject, 需要进行相应的浏览器安全设置,将浏览器安全设置中有关“ActiveX控件和插件”下的相关限制放开,当然,这样做不是很安全。可以将系统访问地址设置为“受信任的站点”,在“受信任的站点”的自定义级别中放开相应限制,这就比较妥当了。) 。function setPrint()var hkey_root,hkey_path,hkey_key; hkey_root=HKEY_CURRENT_USER; hkey_path=SoftwareMicrosoftInternet ExplorerPageSetup; /设置网页打印的页眉页脚为空tryvar RegWsh = new ActiveXObject(WScript.Shell); /设置页眉为空hkey_key=header ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - RegWsh.RegWrite(hkey_root+hkey_path+hkey_key, ); /设置页脚为空hkey_key=footer; RegWsh.RegWrite(hkey_root+hkey_path+hkey_key, ); /设置下页边距(0 )hkey_key=margin_bottom; RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,0); /设置左页边距(0 )hkey_key=margin_left; RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,0); /设置右页边距(0 )hkey_key=margin_right; RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,0); /设置上页边距(0 )hkey_key=margin_top; RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,0); catch(e) alert( 请将本系统地址加入 受信任的站点 ,否则打印格式可能会不正确! ); 当然,除此之外还有其他一些复杂的设置,后续补充名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -