ActiveX控件的使用-js实现打印超市小票功能代码详解


Posted in Javascript onNovember 22, 2017

·应客户的需求= = ,要在网页端实现打印小票的功能

·先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略)

ActiveX控件的使用-js实现打印超市小票功能代码详解

用什么方法实现呢:

我想应该是有三种吧

1.用第三方的浏览器控件(这个好似比较方便,我的老师也是这样建议我)向大家推荐一个 Lodop打印控件

2.用CSS写好模板,然后直接用页面打印的方法(应该是这样吧)

以上两种还没有尝试,这两天陆续尝试)

3.用微软自己的ActiveX控件(ActiveX控件可以实现调用本地的文件等操作(之前试过调用cmd,实现shutdown -s -t,在网页控制电脑的定时关机))

当然这种方法的缺点也很明显:限操作系统-因为是微软的东西只能Windows下,限浏览器-因为ActiveX也只能在IE浏览器下。所以局限性比较大

实现过程:

1.编辑『word小票模板』,要用到word中『书签』这个工具(通过『书签』的定位,js就可以操作word在『书签』指定的位置进行 修改、写入内容)

2.在js对word模板进行 打开、赋值、打印操作

一、编辑『word小票模板』

1.以word2007为例,首先排好大致的样式

ActiveX控件的使用-js实现打印超市小票功能代码详解

二、js

直接上源代码吧:

<input type="button" value="toPrinter " onclick="viewToWord();" />
- Hide code
function viewToWord() {
    //当前时间
    var Time;
    var today = new Date();
    Time = today.toLocaleString();
    
    try { 
      // 创建ActiveXObject对象 
      wdapp = new ActiveXObject("Word.Application"); 
    } 
    catch (e) { 
      console.log("无法调用Office对象,!", e) 
      wdapp = null; 
      return; 
    }
    wdapp.Documents.Open("f:\\PrinterTemplate1.doc"); //打开本地(客户端)word模板
    wddoc = wdapp.ActiveDocument; 
    wddoc.Bookmarks("OrderNum").Range.Text = "201509080959" + "\n";
    wddoc.Bookmarks("OrderName").Range.Text = "郑斌" + "\n"; 
    wddoc.Bookmarks("OrderAddress").Range.Text = "www.cnblogs.com/zhengbin" + "\n";
    wddoc.Bookmarks("OrderPhoneNum").Range.Text = "QQ:1746788394" + "\n";
    wddoc.Bookmarks("OrderDaocanTime").Range.Text = "10:00-11:00" + "\n";
    wddoc.Bookmarks("OrderTime").Range.Text = "09-08 10:15";
    //添加表格
    var myTable = wddoc.Tables.Add (wddoc.Bookmarks("OrderCart").Range,3,3);//(赋值区域,行数,列数)
    //隐藏边框
    var table=wdapp.ActiveDocument.Tables(1);
    table.Borders(-1).LineStyle=0;
    table.Borders(-2).LineStyle=0;
    table.Borders(-3).LineStyle=0;
    table.Borders(-4).LineStyle=0;
    table.Borders(-5).LineStyle=0;
    table.Borders(-6).LineStyle=0;
    for(i=1;i<=3;i++){//行
      //第一列
      with (myTable.Cell(i,1).Range){
        font.Size = 8;//调整字体大小
        InsertAfter("博客园"+i);//插入的内容
      }
      //第二列
      with(myTable.Cell(i,2).Range){
        font.Size = 8;
        InsertAfter(i);
        ParagraphFormat.Alignment=1;//表格内容对齐:0-左对齐 1-居中 2-右对齐
      }
      //第三列
      with(myTable.Cell(i,3).Range){
        font.Size = 8;
        InsertAfter("无价");
        ParagraphFormat.Alignment=2;
      }
    }
    wddoc.saveAs("f:\\PrinterTemp_cnblogs.doc"); //保存临时文件word
    wddoc.Bookmarks("TotalPrice").Range.Text = "无价" + "\n";
    wddoc.Bookmarks("Time").Range.Text = Time; 
    //wdapp.ActiveDocument.ActiveWindow.View.Type = 1;
    wdapp.visible = false; //word模板是否可见 
    wdapp.Application.Printout(); //调用自动打印功能 
    wdapp.quit();
    wdapp = null; 
  }

最后:

ActiveX控件的使用-js实现打印超市小票功能代码详解

注意:

首先要调整好IE浏览器的 Internet选项-自定义级别(右边『ActiveX控件和插件』下,能启用的都启用)

ActiveX控件的使用-js实现打印超市小票功能代码详解

『打印机脱机工作』一般是usb没有插好,换插口,重启打印机即可

有关ActiveX控件,简单介绍下:ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。ActiveX 控件是用于互联网的很小的程序,有时称为插件程序。它们会允许播放动画,或帮助执行任务,如在 Microsoft Update 安装安全更新,因此可以增强您的浏览体验。下面附本站免费下载地址:

总结

以上就是本文关于ActiveX控件的使用-js实现打印超市小票功能代码详解的全部内容,希望对大家有所帮助。如有问题可以随时留言指出,感谢朋友们对本站的支持!

Javascript 相关文章推荐
Add Formatted Text to a Word Document
Jun 15 Javascript
JavaScript类和继承 this属性使用说明
Sep 03 Javascript
ajax中get和post的说明及使用与区别
Dec 23 Javascript
用jquery写的菜单从左往右滑动出现
Apr 11 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
JS仿hao123导航页面图片轮播效果
Sep 01 Javascript
原生js和css实现图片轮播效果
Feb 07 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
微信小程序实现的图片保存功能示例
Apr 24 Javascript
实现高性能javascript的注意事项
May 27 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 #Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 #Javascript
浅谈Angular 中何时取消订阅
Nov 22 #Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 #Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
Nov 22 #Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 #Javascript
利用vue+elementUI实现部分引入组件的方法详解
Nov 22 #Javascript
You might like
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
关于PHP中的Class的几点个人看法
2006/10/09 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python异常学习笔记
2015/02/03 Python
python实现单向链表详解
2018/02/08 Python
python随机数分布random测试
2018/08/27 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
python圣诞树编写实例详解
2020/02/13 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
校园之声广播稿
2014/01/31 职场文书
社区活动总结
2015/02/04 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python