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

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

首先使用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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前端开发知识点 HTML&CSS对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型...
    Hebborn_hb阅读 4,262评论 0 1
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 7,385评论 0 7
  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,867评论 1 11
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 4,997评论 0 1
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 6,582评论 0 8