1、问题描述
项目中通过IE浏览器打印条形码的时候,出现样式偏差,原本应该在一行的换行了,通过调试发现是IE浏览器页边距设置问题,由于客户机器比较多不可能人工去一台一台设置,因此希望通过js设置页眉页脚和页边距。
2、解决方案
通过js直接修改IE浏览器页面设置。亲测可用
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<SCRIPT language=javascript>var HKEY_Root, HKEY_Path, HKEY_Key;HKEY_Root = "HKEY_CURRENT_USER";HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";var head, foot, top, bottom, left, right;//取得页面打印设置的原参数数据 function PageSetup_temp() {try {var Wsh = new ActiveXObject("WScript.Shell");HKEY_Key = "header";//取得页眉默认值 head = Wsh.RegRead(HKEY_Root + HKEY_Path + HKEY_Key);HKEY_Key = "footer";//取得页脚默认值 foot = Wsh.RegRead(HKEY_Root + HKEY_Path + HKEY_Key);HKEY_Key = "margin_bottom";//取得下页边距 bottom = Wsh.RegRead(HKEY_Root + HKEY_Path + HKEY_Key);HKEY_Key = "margin_left";//取得左页边距 left = Wsh.RegRead(HKEY_Root + HKEY_Path + HKEY_Key);HKEY_Key = "margin_right";//取得右页边距 right = Wsh.RegRead(HKEY_Root + HKEY_Path + HKEY_Key);HKEY_Key = "margin_top";//取得上页边距 top = Wsh.RegRead(HKEY_Root + HKEY_Path + HKEY_Key);} catch(e) {alert("不允许ActiveX控件");}}//设置网页打印的页眉页脚和页边距 function PageSetup_Null() {try {var Wsh = new ActiveXObject("WScript.Shell");HKEY_Key = "header";//设置页眉(为空) Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");HKEY_Key = "footer";//设置页脚(为空) Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");HKEY_Key = "margin_bottom";//设置下页边距(0) Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0");HKEY_Key = "margin_left";//设置左页边距(0) Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0");HKEY_Key = "margin_right";//设置右页边距(0) Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0");HKEY_Key = "margin_top";//设置上页边距(8) Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0.313");} catch(e) {alert("不允许ActiveX控件");}}//设置网页打印的页眉页脚和页边距为默认值 function PageSetup_Default() {try {var Wsh = new ActiveXObject("WScript.Shell");HKEY_Key = "header";//还原页眉 Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, head);HKEY_Key = "footer";//还原页脚 Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, foot);HKEY_Key = "margin_bottom";//还原下页边距 Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, bottom);HKEY_Key = "margin_left";//还原左页边距 Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, left);HKEY_Key = "margin_right";//还原右页边距 Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, right);HKEY_Key = "margin_top";//还原上页边距 Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, top);} catch(e) {alert("不允许ActiveX控件");}}function printorder() {PageSetup_Null(); //设置页面 }
</script><input type="button" value="设置页眉页脚和页边距" onclick="printorder()"></body>
</html>
调用方法前页面设置:
调用方法前打印预览:
调用设置页面、页脚和页边距方法:
调用方法后页面设置:
调用方法后打印预览效果: