美文网首页
设置window.print()默认横向打印

设置window.print()默认横向打印

作者: 紫诺_qiu | 来源:发表于2019-12-17 20:04 被阅读0次

背景:打印表格内容太多,需要默认横向打印

首先使用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>

相关文章

网友评论

      本文标题:设置window.print()默认横向打印

      本文链接:https://www.haomeiwen.com/subject/nfeenctx.html