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 相关文章推荐
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
jQuery把表单元素变为json对象
Nov 06 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
javascript 循环调用示例介绍
Nov 20 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
jQuery.holdReady()方法用法实例
Dec 27 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
Feb 26 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
详解vue如何使用rules对表单字段进行校验
Oct 17 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
Python占用的内存优化教程
2019/07/28 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
如何利用Python写个坦克大战
2020/11/18 Python
求职自荐信范文格式
2013/11/29 职场文书
爱护公物演讲稿
2014/09/09 职场文书
邀请函范文
2015/02/02 职场文书
道歉短信大全
2015/05/12 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
nginx共享内存的机制详解
2022/03/21 Servers