/** * 打印模块 * date:2020-02-08 License By http://easyweb.vip */ layui.define(['jquery'], function (exports) { var $ = layui.jquery; var hideClass = 'hide-print'; // 打印时隐藏 var printingClass = 'printing'; // 正在打印 var ieWebBrowser = ''; var printer = { // 判断是否是ie isIE: function () { return (!!window.ActiveXObject || 'ActiveXObject' in window); }, // 判断是否是Edge isEdge: function () { return navigator.userAgent.indexOf('Edge') !== -1; }, // 判断是否是Firefox isFirefox: function () { return navigator.userAgent.indexOf('Firefox') !== -1; } }; /** 打印当前页面 */ printer.print = function (param) { window.focus(); // 让当前窗口获取焦点 param || (param = {}); var hide = param.hide; // 需要隐藏的元素 var horizontal = param.horizontal; // 纸张是否是横向 var iePreview = param.iePreview; // 兼容ie打印预览 var blank = param.blank; // 是否打开新窗口 var close = param.close; // 如果是打开新窗口,打印完是否关闭 // 设置参数默认值 (iePreview === undefined) && (iePreview = true); (blank === undefined && window !== top && iePreview && printer.isIE()) && (blank = true); (close === undefined && blank && !printer.isIE()) && (close = true); // 打印方向控制 $('#page-print-set').remove(); var printSet = ''; $('body').append(printSet); // 隐藏打印时需要隐藏内容 printer.hideElem(hide); // 打印 var pWindow; if (blank) { // 创建打印窗口 pWindow = window.open('', '_blank'); pWindow.focus(); // 让打印窗口获取焦点 // 写入内容到打印窗口 var pDocument = pWindow.document; pDocument.open(); var blankHtml = '' + document.getElementsByTagName('html')[0].innerHTML; if (iePreview && printer.isIE()) { blankHtml += ieWebBrowser; blankHtml += (''); } else { blankHtml += (''); } pDocument.write(blankHtml); pDocument.close(); } else { pWindow = window; if (iePreview && printer.isIE()) { ($('#WebBrowser').length === 0) && ($('body').append(ieWebBrowser)); WebBrowser.ExecWB(7, 1); } else { pWindow.print(); } } printer.showElem(hide); return pWindow; }; /** 打印html字符串 */ printer.printHtml = function (param) { param || (param = {}); var html = param.html; // 打印的html内容 var blank = param.blank; // 是否打开新窗口 var close = param.close; // 打印完是否关闭打印窗口 var print = param.print; // 是否自动调用打印 var horizontal = param.horizontal; // 纸张是否是横向 var iePreview = param.iePreview; // 兼容ie打印预览 // 设置参数默认值 (print === undefined) && (print = true); (iePreview === undefined) && (iePreview = true); (blank === undefined && printer.isIE()) && (blank = true); (close === undefined && blank && !printer.isIE()) && (close = true); // 创建打印窗口 var pWindow, pDocument; if (blank) { pWindow = window.open('', '_blank'); pDocument = pWindow.document; } else { var printFrame = document.getElementById('printFrame'); if (!printFrame) { $('body').append(''); printFrame = document.getElementById('printFrame'); } pWindow = printFrame.contentWindow; pDocument = printFrame.contentDocument || printFrame.contentWindow.document; } pWindow.focus(); // 让打印窗口获取焦点 // 写入内容到打印窗口 if (html) { // 加入公共css html += (''); // 打印方向控制 html += ''; // 打印预览兼容ie if (iePreview && printer.isIE()) { html += ieWebBrowser; if (print) { html += (''); } } else if (print) { html += (''); } // 写入html pDocument.open(); pDocument.write(html); pDocument.close(); } return pWindow; }; /** 分页打印 */ printer.printPage = function (param) { param || (param = {}); var htmls = param.htmls; // 打印的内容 var horizontal = param.horizontal; // 纸张是否是横向 var style = param.style; // 打印的样式 var padding = param.padding; // 页边距 var blank = param.blank; // 是否打开新窗口 var close = param.close; // 打印完是否关闭打印窗口 var print = param.print; // 是否自动调用打印 var width = param.width; // 页面宽度 var height = param.height; // 页面高度 var iePreview = param.iePreview; // 兼容ie打印预览 var isDebug = param.debug; // 调试模式 // 设置参数默认值 (print === undefined) && (print = true); (iePreview === undefined) && (iePreview = true); (blank === undefined && printer.isIE()) && (blank = true); (close === undefined && blank && !printer.isIE()) && (close = true); // 创建打印窗口 var pWindow, pDocument; if (blank) { pWindow = window.open('', '_blank'); pDocument = pWindow.document; } else { var printFrame = document.getElementById('printFrame'); if (!printFrame) { $('body').append(''); printFrame = document.getElementById('printFrame'); } pWindow = printFrame.contentWindow; pDocument = printFrame.contentDocument || printFrame.contentWindow.document; } pWindow.focus(); // 让打印窗口获取焦点 // 拼接打印内容 var htmlStr = '