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 相关文章推荐
jquery.Ajax()方法调用Asp.Net后台的方法解析
Feb 13 Javascript
jQuery实现高亮显示网页关键词的方法
Aug 07 Javascript
jquery自定义右键菜单、全选、不连续选择
Mar 01 Javascript
浅谈js常用内置方法和对象
Sep 24 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
Mar 09 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
Jun 02 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
ES6模板字符串和标签模板的应用实例分析
Jun 25 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
vscode自定义vue模板的实现
Jan 27 Vue.js
前端必备插件之纯原生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
做一个有下拉功能的留言版
2006/10/09 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
python 域名分析工具实现代码
2009/07/15 Python
Python中的id()函数指的什么
2017/10/17 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
在django模板中实现超链接配置
2019/08/21 Python
python线程中的同步问题及解决方法
2019/08/29 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
Django xadmin安装及使用详解
2020/10/26 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
巴西宠物商店:Cobasi
2019/04/19 全球购物
学校安全教育制度
2014/01/31 职场文书
挂靠协议书范本
2014/04/22 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
工作年限证明模板
2014/11/01 职场文书
教师个人发展总结
2015/02/11 职场文书