网上有不少关于web打印的js代码和解决办法,这里推荐一个认为介绍的比较全的
https://blog.csdn.net/qq_19707521/article/details/58586264
1.使用jQuery插件进行打印 jquery.print
引入文件javascript
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.print.js"></script>
调用方法php
$("#myElementId").print(/*options*/);
或者:
$.print("#myElementId" /*, options*/);
参数配置html
$("#myElementId").print({
globalStyles: true,
mediaPrint: false,
stylesheet: null,
noPrintSelector: ".no-print",
iframe: true,
append: null,
prepend: null,
manuallyCopyFormValues: true,
deferred: $.Deferred()
});
参数 | 默认值 | 接受值 | 描述 |
---|---|---|---|
globalStyles | true | Boolean | 是否包含父文档的样式 |
mediaPrint | false | Boolean | 是否包含media=’print’的连接标签。会被globalStyles选项覆盖 |
stylesheet | null | URL-string | 外部样式表的URL地址 |
noPrintSelector | “.no-print” | 任何可用的jQuery选择器 | 不想打印的元素的jQuery选择器 |
iframe | 默认true,若是没有iframe选择器被传入会建立一个隐藏的iframe | 任何可用的jQuery选择器或Boolean | 是否使用一个iframe来替代打印表单的弹出窗口 |
append/prepend | null | Boolean | 是否将用户更新的表单输入框内容做为打印内容(经过迭代每个表单元素来实现) |
deferred | $.Deferred() | 任何可用的jQuery.Deferred对象 | 当打印函数被调用时的jQuery.Deferred对象 |
上面的参数说明已经很详细了,这里要说明的是 iframe参数true 或 false是指是否蒋打印的内容从新赋值给body,新开页面进行打印
deferred参数能够去搜下官网介绍,调用成功失败后的回调java
$("#print").print({
//Use Global styles
globalStyles : false,
//Add link with attrbute media=print
mediaPrint : false,
//Custom stylesheet
stylesheet : "",
//Print in a hidden iframe
iframe : true,
//Don't print this
noPrintSelector : "",
//Add this at top
prepend : "",
//Add this on bottom
append : "===============<br/>"+now,
deferred:$.Deferred().done(function () {
alert("成功")
})
});
这种方法能够很轻松的实现打印只须要 给个隐藏框 调用时显示 打印完再隐藏,问 题是不管chrome仍是ie都须要调出浏览器打印控件。
大多数打印机用的是A4纸,而咱们项目须要用到的是小票纸 宽56mm 这就须要设置浏览器打印选项,每次设置起来很不方便
jquery
2.php后端打印php_printer.dll扩展
参考博客 https://www.cnblogs.com/skyfynn/p/5895703.html
很强大但也很操蛋,只能再本地服务器安装打印,远程实现不了web
3.一个很不错的控件Lodop,几乎支持全部浏览器和打印机
官网下载地址 http://www.lodop.net/download.html
文档很详细,支持套打,分页打chrome
LODOP=getLodop();
LODOP.PRINT_INIT(""); //初始化
LODOP.SET_PRINT_PAGESIZE(1, "56mm","90mm","")//设置纸张大小
LODOP.SET_PRINT_STYLE("ItemType",0); //页脚页眉
LODOP.SET_PRINT_STYLE("FontSize",10);
LODOP.SET_PRINT_STYLE("Bold",1);
LODOP.ADD_PRINT_TEXT("80mm","0","56mm","1mm",'=============');
LODOP.ADD_PRINT_BARCODE("55mm","13mm","30mm","30mm","QRCode","1233")//二维码
LODOP.ADD_PRINT_HTM("0","0","56mm","80mm",document.getElementById("print").innerHTML);//获取节点
LODOP.PREVIEW(); //打印预览
LODOP.PRINT();//直接打印
惟一不美的是 不购买,只能预览打印 直接打印的话页脚会有一个水印。后端