一种基于浏览器的自动小票机打印实现方案(js版)


Posted in Javascript onJuly 26, 2016

1、使用场景

用户在浏览器做了某项操作后,自动打印小票。

2、测试方式

2.1 JavaScript实现

尝试了很多办法,最终都会出现一个弹出框,让用户选择打印机。不符合我们需求。

2.2 lodop

功能比较强大,但是收费的。暂不考虑。

2.3 PAZU

功能也很强大,免费许可。非常赞!

详情:http://www.4fang.net/article/tech/pazu_tprinter.html

实现过程:

2.3.1 打印详情页面

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>小票</title>
<style>
body {
margin: 0px;
padding: 0px;
font-size: 11px;
}
hr{width: 100%; border: 1px dashed black;}
/*****************
小票
*****************/
.table .title{
font-size:14px;
}
.table{
width:100%;
}
.table .left{
text-align:right;
}
</style>
</head>
<body>
<table class="table">
<tr>
<td align="center" class="title">ABC学校</td>
</tr>
<tr>
<td align="center">小票</td>
</tr>
<tr>
<td><hr size="1" /></td>
</tr>
</table>
<table class="table">
<caption>
<col style="width:40%">
<col style="width:60%">
</caption>
<tbody>
<tr>
<td class="left">签到时间:</td>
<td class="right">2015年10月19日 15:30</td>
</tr>
<tr>
<td class="left">学员姓名:</td>
<td class="right">周深</td>
</tr>
<tr>
<td class="left">班级:</td>
<td class="right">少儿班</td>
</tr>
<tr>
<td class="left">学校名称:</td>
<td class="right">ABC学院</td>
</tr>
<tr>
<td colspan="2"><hr size="1" /></td>
</tr>
</tbody>
</table>
<table class="table">
<caption>
<col style="width:40%">
<col style="width:60%">
</caption>
<tbody>
<tr>
<td class="left">卡信息:</td>
<td class="right">季卡/60次</td>
</tr>
<tr>
<td class="left">卡余额:</td>
<td class="right">32次</td>
</tr>
<tr>
<td class="left">到期日期:</td>
<td class="right">无限期</td>
</tr>
<tr>
<td class="left">激活日期:</td>
<td class="right">2015-09-08</td>
</tr>
<tr>
<td colspan="2"><hr size="1" /></td>
</tr>
</tbody>
</table>
<table class="table">
<tr>
<td align="center">感谢您的惠顾!<br/>请保管好小票,如有问题,请出示,谢谢!</td>
</tr>
<tr>
<td align="center"><img src="code.png" class="code"/><br/>扫码查详情</td>
</tr>
</table>
</body>
</html>

2.3.2 业务页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="printReceipt.js"></script>
</head>
<body>
<iframe frameborder="0" scrolling="scrolling" src="receipt.html" name="myifrm" id="myifrm" style="height: 0;width: 323px;">
</iframe>
<input class="p__" name="Button1" type="button" value="打印试试!" onclick="print(1);" style="width: 301px"/>
</body>
<script>
initPrintActiveX();
</script>
</html>

2.3.3 js引入

/**
* Created by hery on 2016/7/25.
*/
function initPrintActiveX(){
var div_ = document.createElement('div');
div_.style="display:none";
var object_=document.createElement('object');
object_.setAttribute("classid","clsid:AF33188F-6656-4549-99A6-E394F0CE4EA4");
object_.setAttribute("codebase","http://www.4Fang.net/4ff/sc_setup.exe");
object_.setAttribute("id","pazu");
object_.setAttribute("name","pazu");
var param_=document.createElement('param');
param_.setAttribute("name","License");
param_.setAttribute("value","2AE816BA3A24A9BA3F01162E7BF420F4");
object_.appendChild(param_);
div_.appendChild(object_);
document.getElementsByTagName("body")[0].appendChild(div_);
}
//预先选中的纸张
var strDefaultPaper = 'A4';
//1.载入打印机和纸张列表
function init() {
listPrinters();
//listPapers();
//2.页面载入立即打印
//demo();
}
//列出所有的打印机
function listPrinters() {
var ps = pazu.TPrinter.getPrinters();
//获得是一个以回车换行分隔的字符串
// alert(ps);
var pa = ps.split("\r\n");
for (var i = 0; i < pa.length; i++) {
//alert(pa[i]);
var Op = document.createElement("option");
Op.text = pa[i];
Op.value = pa[i];
try {
printers.add(Op);
} catch (ex) {
alert(ex.message)
}
}
}
function print(num) {
/*跳过IE打印选择提示*/
//默认打印机的名称设置为:GP-58120 Series
var isPromtUser = false;
/*页面设置*/
var sPaper = "A4";
// var sPrinter = printers.value;
var sPrinter = "GP-58120 Series";
pazu.TPrinter.marginTop = 1; //属性 上边距
pazu.TPrinter.marginBottom = 14; //属性 下边距
pazu.TPrinter.marginLeft = 7; //属性 左边距
pazu.TPrinter.marginRight = 8; //属性 右边距
pazu.TPrinter.footer = ""; //属性 页脚
pazu.TPrinter.header = ""; //属性 页眉
pazu.TPrinter.orientation = 1; //属性 整型:纸张方向 1=纵向 2=横向
pazu.TPrinter.paperName = sPaper; //属性 纸张大小名称
pazu.TPrinter.printerName = sPrinter; //属性 打印机名称
pazu.TPrinter.isPrintBackground = false; //属性 是否打印背景 true / false
pazu.TPrinter.isZoomOutToFit = true; //属性 是否缩放以适应大小打印 true / false
//pazu.TPrinter.printTemplate = sPT; //属性 打印模板的URL
pazu.TPrinter.copies = num; //属性 打印份数
//pazu.TPrinter.range = range.value; //属性 页面范围
pazu.TPrinter.isCopyByCopy = false; //属性 是否整份打印结束后再打印下一份 true / false
//pazu.TPrinter.getDefaultPrinter //方法 获得默认打印机的对象
//pazu.TPrinter.printToDefaultPrinter //方法 把要打印的字符串输送到默认打印机(配合getDefaultPrinter 使用)
//pazu.TPrinter.getPaperForms //方法 返回所有纸张格式的列表,以vbCrlf 分割
//pazu.TPrinter.getPrinters //方法 返回一个打印机列表,以vbCrlf 分割
//pazu.TPrinter.createPaper //方法 按指定的宽度和高度创建自定义纸张 请看示例
//pazu.TPrinter.doPrint //方法 执行打印
//pazu.TPrinter.doPrint_ //方法 执行打印但是不进行页面参数设置
//pazu.TPrinter.doPreview //方法 打印预览
//pazu.TPrinter.doPageSetup //方法 执行页面参数的设置
//pazu.TPrinter.showPageSetup //方法 弹出页面设置窗口
//pazu.TPrinter.writeHTMLtoOfficeFile 方法 把HTML导出为Office EXCEL或者 Word格式文件
//要指定打印那个Frame只要用javascript 让那个Frame获得焦点就可以了
//注意:这种方式下是不能预览的,只能立即打印。否则预览看到的是整个网页,而不是指定的frame
window.frames['myifrm'].focus();
//pazu.TPrinter.doPreview();//打印预览
pazu.TPrinter.doPrint(isPromtUser);
}
String.prototype.trim = function () {
return this.replace(/(^\s*)|(\s*$)/g, "");
}
function isNum(n) {
if (isNaN(n))return false;
return true;
}

以上所述是小编给大家介绍的一种基于浏览器的自动小票机打印实现方案(js版),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js禁止回车提交表单的示例代码
Dec 23 Javascript
node.js操作mongoDB数据库示例分享
Nov 26 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
Jan 13 Javascript
js实现仿百度瀑布流的方法
Feb 05 Javascript
学习jQuey中的return false
Dec 18 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
vue.js树形组件之删除双击增加分支实例代码
Feb 28 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
JS实现数组去重方法总结(六种方法)
Jul 14 Javascript
详解vue-cli下ESlint 配置说明
Sep 03 Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
小程序实现横向滑动日历效果
Oct 21 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 #Javascript
JavaScript从0开始构思表情插件
Jul 26 #Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 #Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 #Javascript
js获取html的span标签的值方法(超简单)
Jul 26 #Javascript
js无法获取到html标签的属性的解决方法
Jul 26 #Javascript
jquery判断对象是否为空并遍历对象的简单实例
Jul 26 #Javascript
You might like
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
python client使用http post 到server端的代码
2013/02/10 Python
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python类属性与实例属性用法分析
2015/05/09 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
python实现周期方波信号频谱图
2018/07/21 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
python logging通过json文件配置的步骤
2020/04/27 Python
Python如何获取文件路径/目录
2020/09/22 Python
python开发一款翻译工具
2020/10/10 Python
使用HTML5的Notification API制作web通知的教程
2015/05/08 HTML / CSS
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
行政助理求职自荐信
2013/10/26 职场文书
心理健康教育心得体会
2013/12/29 职场文书
八一演出活动方案
2014/02/03 职场文书
消防安全检查制度
2014/02/04 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
质量管理标语
2014/06/12 职场文书
租房协议书
2014/09/12 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
为自己工作观后感
2015/06/11 职场文书