浏览器打印:
通过
window.print()
、document.execCommand('print')
调用浏览器打印
缺点
- 打印的是整个网页,不能打印局部内容;
- 打印不支持自定义分页行为,默认不支持批量打印;
局部打印
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,进行打印