Skip to content

浏览器打印:

通过 window.print()document.execCommand('print') 调用浏览器打印

缺点

  1. 打印的是整个网页,不能打印局部内容;
  2. 打印不支持自定义分页行为,默认不支持批量打印;

局部打印

js
function customPrint() {
  let wrap = document.getElementsByClassName("printHtml")[0];
  let html = wrap.innerHTML;
  let head = document.head.innerHTML;
  let open = window.open();
  open.document.write(head);
  open.document.write(html);
  open.document.onload = function () {
    open.print();
    open.close();
  };
}

打印样式设置

@media print

css
@media print {
  .desc {
    display: none;
  }
}

@page

css
@page {
  padding: 0;
  margin: 0;
  /* auto(浏览器控制) landscape(横向)、portrait(竖向)*/
  size: A4 landscape;
}

page-break-

  • page-break-before( after ) 用于设置元素前( 后 )的分页行为,可取值:

    • auto 默认值。如果必要则在元素前插入分页符。
    • always 在元素前插入分页符。
    • avoid 避免在元素前插入分页符。
    • left 在元素之前足够的分页符,一直到一张空白的左页为止。
    • right 在元素之前足够的分页符,一直到一张空白的右页为止。
    • inherit 规定应该从父元素继承 page-break-before 属性的设置。
  • page-break-inside 设置元素内部的分页行为。取值如下:

    • auto 默认。如果必要则在元素内部插入分页符。
    • avoid 避免在元素内部插入分页符。
    • inherit 规定应该从父元素继承 page-break-inside 属性的设置。
  • orphans 设置当元素内部发生分页时必须在页面底部保留的最少行数

CLodop

  • Lodop(读音“劳道谱”), Web 开发的必选伴侣;
  • 目前 Lodop 家族有 C-Lodop 和 Lodop7 两个主流版本,C-Lodop 主要担纲 Windows 下的 Web 打印服务,
  • 它可以像浏览器打印插件一样使用,也可部署成集中打印服务器,给手机和平板打印提供云端;

HiPrint:

不需要安装客户端,但是没有 npm 包,依赖于 jQuery

云打印(node + ipp)

互联网打印协议 (IPP;Internet Printing Protocol)是一个在互联网上打印的标准网络协议,它容许用户可以透过互联网作遥距打印及管理打印工作等工作。用户可以透过相关界面来控制打印品所使用的纸张种类、分辨率等各种参数。

大致流程: 用户发起打印申请,后端通过 无头浏览器获取页面并生成 PDF,将 PDF 发送给 ipp,进行打印