资江小票打印机js实现web打印(web通用打印)

资江小票打印机js实现web打印(web通用打印)

网上有不少关于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();//直接打印 

惟一不美的是 不购买,只能预览打印 直接打印的话页脚会有一个水印。后端