• 应客户的需求= = ,要在网页端实现打印小票的功能
  • 先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略)

  

用什么方法实现呢:

    我想应该是有三种吧

    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为例,首先排好大致的样式

      

    2.用『书签』进行标记定位

      选中要添加书签的文字区域-点击『书签』-填写书签名-点击『添加』-『定位』可以查看此书签的位置

                   

二、js

直接上源代码吧:

<input type="button" value="toPrinter " onclick="viewToWord();" />  
 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;
}

  最后:

    

  • 注意:

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

    

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

  • 感谢以下几位博主的精彩博文:

  http://kuangbaoxu.iteye.com/blog/193311

  http://baser.blog.51cto.com/4153192/844742

  http://xiaosuncunzhang.blog.51cto.com/317407/584844

  http://blog.csdn.net/weizengxun/article/details/6870880

  http://blog.sina.com.cn/s/blog_692d0a650100klr4.html

【JS】通过JS实现超市小票打印功能——ActiveX控件的更多相关文章

  1. 【JS】打印Excel——ActiveX控件

    function viewToExcel(){ var filepath = "f:\\PrinterExcel.xls"; var xlApp; var xlBook; var ...

  2. Atitit.收银机小票打印功能的设计  java php c#.net版本

    Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...

  3. Js或 Activex 控件调用打印预览等操作

    <input value="打印" type="button" onclick="javascript:window.print()" ...

  4. WdatePicker.js的使用方法 帮助文档 使用说明(时间控件)

    WdatePicker.js的使用方法 帮助文档 使用说明(时间控件)   4. 日期范围限制 静态限制 注意:日期格式必须与 realDateFmt 和 realTimeFmt 一致 你可以给通过配 ...

  5. js之ActiveX控件使用说明 new ActiveXObject()

    什么是 ActiveX 控件? ActiveX 控件广泛用于 Internet.它们可以通过提供视频.动画内容等来增加浏览的乐趣.不过,这些程序可能出问题或者向您提供不需要的内容.在某些情况下,这些程 ...

  6. js进阶 9-6 js如何通过name访问指定指定表单控件

    js进阶 9-6 js如何通过name访问指定指定表单控件 一.总结 一句话总结:form中控件的三种访问方式:2formElement 1document 1.form中控件的三种访问方式? 1.f ...

  7. 基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)

    原文转自 https://blog.csdn.net/qianbin3200896/article/details/81452822 1.ActiveX控件部分(JS到ActiveX控件)继续上一篇博 ...

  8. three.js cannon.js物理引擎地形生成器和使用指针锁定控件

    今天郭先生说一说使用cannon.js物理引擎绘制地形和使用指针锁定控件.效果如下图.线案例请点击博客原文. 这里面的生成地形的插件和指针锁定控件也是cannon.js的作者schteppe封装的,当 ...

  9. 多功能弹窗控件layer

    开发网站的时候,如何合理运用好各种插件对开发的帮助是很大的. 免去了我们调试各种交互效果, 比如常用的弹窗.气泡.提示.加载.焦点.标签.导航.折叠等等 这里会推荐几个常用的js插件,丰富多样简单易移 ...

随机推荐

  1. HDFS架构设计

    原文:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html 介绍 HDFS是个分布式 ...

  2. Android API之android.widget.Filterable

      android.widget.Filterable 定义了一种可过滤的行为.Filterable接口通常有android.widget.Adapter来实现.接口Filterable中有个抽象方法 ...

  3. jQuery使用正则判断是否含有非法字符

    if(/[@#\$%\^&\*]+/gi.test($("#user_api_register_form").find("input[name='user_nam ...

  4. Matlab调用返回游标的存储过程的分析和处理

    2.Matlab调用Oracl带游标参数输出的存储过程 笔者也是将工作之中遇到的问题进行了搜集与整理,才完成该文的编写,希望能帮助到有需要的朋友. 2.1.PLSQL中的存储过程 PROCEDURE ...

  5. SQLite简单介绍

    一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1)归档:NSCodeing.NSKeyed ...

  6. PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释

    PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora原理解释 oracle网络配置三个配置文件 lis ...

  7. 网站博客更换主机空间搬家:Discuz! X2.5老鹰主机搬家全过程

    http://www.freehao123.com/discuz-x2-5-banjia/由于我放在hawkhost老鹰主机主机的部落论坛就要到期了,而老鹰主机的续费价格却是按照原价来的,没有任何优惠 ...

  8. Android 加新的页面

    工程右键->New->Other->Android Activity

  9. Java并发和多线程:序

      近期,和不少公司的"大牛"聊了聊,当中非常多是关于"并发和多线程"."系统架构"."分布式"等方面内容的.不少问题, ...

  10. nginx实战七

    Nginx优化-配置参数优化上 https://coding.net/u/aminglinux/p/nginx/git/blob/master/optimize/nginx_opt.md Nginx作 ...