资江小票打印机js实现web打印(web通用打印)
网上有很多关于web打印的js代码和解决办法,这里推荐一个认为介绍的比较全的
1.使用jQuery插件进行打印 jquery.print
引入文件
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.print.js"></script>
调用方法
$("#myElementId").print(/*options*/);
或者:
$.print("#myElementId" /*, options*/);
参数配置
$("#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参数可以去搜下官网介绍,调用成功失败后的回调
$("#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 这就需要设置浏览器打印选项,每次设置起来很不方便
2.php后端打印php_printer.dll扩展
参考博客
很强大但也很操蛋,只能再本地服务器安装打印,远程实现不了
3.一个很不错的控件Lodop,几乎支持所有浏览器和打印机
文档很详细,支持套打,分页打
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();//直接打印
唯一不美的是 不购买,只能预览打印 直接打印的话页脚会有一个水印。