背景:打印表格内容太多,需要默认横向打印
首先使用css | @page设置打印样式
@page {
size: landscape;
}
验证时发现谷歌浏览器可以用,IE浏览器不兼容。
IE浏览器默认横向打印的设置
模拟键盘事件:
<script>
function doPrint() {
try {
const RegWsh = new ActiveXObject("WScript.Shell");
RegWsh.sendKeys("%fu");
RegWsh.sendKeys("%a");
RegWsh.sendKeys("{ENTER}");
WebBrowser.execwb(8, 1); //弹出打印设置
window.print();
} catch (error) {
throw error;
}
}
</script>
<body>
<object
id="WebBrowser"
height="0"
width="0"
classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
viewastext
></object>
<div>这是一段需要打印的文本</div>
<button onclick="doPrint()">打印按钮</button>
</body>
运行时发现,点击打印按钮,直接弹出设置页面,需要手动选择横向打印或者纵向打印,并不能达到不用手动设置就能默认横向打印的目的。
使用ScriptX插件设置打印参数
ScriptX插件可以支持设置浏览器打印参数(IE浏览器兼容),ScriptX下载地址。下载完成后直接默认安装即可。
安装成功之后则需要找到安装目录下的redist
文件夹,将文件夹下的smsx.cab
拷贝到项目中。然后在<object>
的codebase
中添加控件的绝对路径。如:
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="user-scalable=0, initial-scale=1, minimum-scale=1, width=device-width, height=device-height"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<title>打印demo</title>
<style>
body {
margin: 0;
}
</style>
<script>
function doPrint() {
factory.printing.portrait = false; //打印方向,true:纵向.false:横向
window.print();
}
</script>
</head>
<body>
<object
id="factory"
viewastext
style="display:none"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
codebase="smsx.cab#Version=7,0,0,8"
>
</object>
<div>打印内容。。。</div>
<button onclick="doPrint()">打印</button>
</body>
</html>
网友评论