最近项目中用到了打印机,最开始的完全不懂,现在弄好了,所以做了总结,该篇包括后台的调用打印(两种方式)跟前端的js的打印,但是只有IE现在支持打印,而且如果想远程连接打印机,二维码的生成和直接由打印机的命令进行操作,就要把修改浏览器的安全配置,下面再做详细的介绍

第一种后台打印:  

使用javax中的PrintServiceLookup类进行打印,可以直接调用默认的打印机,也可以使用下列的方法进行筛选打印:

PrintServiceLookup.lookupMultiDocPrintServices(flavorsattributes);

可执行代码如下:

public static void main(String[] args) {FileInputStream textStream = null;try {textStream = new FileInputStream("地址");} catch (FileNotFoundException e) {e.printStackTrace();} if (textStream != null) // 当打印内容不为空时{// 指定打印输出格式DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE// 定位默认的打印服务PrintService printService = PrintServiceLookup.lookupDefaultPrintService();// 创建打印作业DocPrintJob job = printService.createPrintJob();// 设置打印属性PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();// 设置纸张大小,也可以新建MediaSize类来自定义大小pras.add(MediaSizeName.ISO_A4);DocAttributeSet das = new HashDocAttributeSet();// 指定打印内容Doc doc = new SimpleDoc(textStream, flavor, das);// 不显示打印对话框,直接进行打印工作try {job.print(doc, pras); // 进行每一页的具体打印操作} catch (PrintException pe) {pe.printStackTrace();}} else {// 如果打印内容为空时,提示用户打印将取消JOptionPane.showConfirmDialog(null,"Sorry, Printer Job is Empty, Print Cancelled!","Empty", JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);}}

第二种后台打印:

注意:第二种跟第三种打印使用的是打印机的命令进行操作,这里需要jna的jar包,还有jdk要求是32位的,并且要要注册对应的dll,对应不同的系统要在不同的Windows下进行注册DLL,注册成功之后需要win+R ,调用并运行  Regsvr32.exe TSCActiveX.dll 指令

可执行代码如下:

public class JavaDemo {public interface TscLibDll extends Library {TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary("TSCLIB", TscLibDll.class);int about();int openport(String pirnterName);int closeport();int sendcommand(String printerCommand);int setup(String width, String height, String speed, String density, String sensor, String vertical, String offset);int downloadpcx(String filename, String image_name);int barcode(String x, String y, String type, String height, String readable, String rotation, String narrow, String wide, String code);int printerfont(String x, String y, String fonttype, String rotation, String xmul, String ymul, String text);int clearbuffer();int printlabel(String set, String copy);int formfeed();int nobackfeed();int windowsfont(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content);}public static void main(String[] args) {System.setProperty("jna.encoding", "GBK");// 支持中文SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = df.format(new Date());String qrCode = "PD102011";TscLibDll.INSTANCE.openport("TSC TTP-244 Pro");//打印机型号TscLibDll.INSTANCE.setup("70","40","5","8","0","2","0");TscLibDll.INSTANCE.clearbuffer();String command = "QRCODE 120,90,Q,8,A,0,M1,S7,\"" + qrCode+"\""; //打印二维码的参数和内容TscLibDll.INSTANCE.sendcommand(command); //传送指令TscLibDll.INSTANCE.sendcommand("TEXT 300 70 36 0 0 0 arial"+ "办公耗材-标签纸");//TscLibDll.INSTANCE.windowsfont(300, 70, 36, 0, 0, 0, "arial", "办公耗材-标签纸");TscLibDll.INSTANCE.printlabel("1", "1");TscLibDll.INSTANCE.closeport();}
}

注意:这种打印方式,需要USB连接(ttp-244 pro),如果想在线生成,远程连接,需要使用第三种方式

第三种JS打印

在使用JS进行打印的时候要主要浏览器的限制,目前只有IE浏览器进行支持,在进行打印时,控制台出现Automation 服务器不能创建对象的,请调节浏览器的安全中的自定义级别中的ActiveX中相关的设置为启用,代码如下:

<script type="text/javascript">function printQRcode(){var TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//打印机使用的dll//TSCObj.ActiveXabout(); // 打印机信息TSCObj.ActiveXopenport ("TSC TTP-244 Pro");//打印机名称,不能写错//TSCObj.ActiveXdownloadpcx ("D:/myeclipseproject/filesManager/trunk/doc/02-参考资料/03-二维码打印机/01-开发帮助/PHP调用范例/TSCActiveX.DLL-PHP-Example/","123.PCX");TSCObj.ActiveXsetup("70","40","4","15","0","2.5","0");//打印机设置//TSCObj.ActiveXsetup("标签宽度","标签高度","打印速度","打印浓度(0-15)","感应器类别字串型,0 表示使用垂直間距感測器(gap sensor), 1 表示使用黑標感測器(black mark senso)","Gap/Black mark垂直间距(mm)","Gap/Black mark偏移距离(mm)");//TSCObj.ActiveXformfeed();//TSCObj.ActiveXnobackfeed();TSCObj.ActiveXsendcommand("DIRECTION 1");  //设置标签方向 ,DIRECTION 1 左上角 (x,y)={0,0};DIRECTION 0 右下角 (x,y)={0,0};TSCObj.ActiveXsendcommand ("SET TEAR ON");TSCObj.ActiveXclearbuffer();//TSCObj.ActiveXsendcommand ("PUTPCX 0,0,\"123.PCX\"");/*1、ActiveXprinterfont采用机器内置编码通常用来打英文。2、ActiveXwindowsfont可以输出汉字,但是必须是系统中存在的字体。TSCObj.ActiveXprinterfont ("a","b","c","d","e","f","g");a:字符串,文字X方向起始点,以点表示。b:字符串,文字Y方向起始点,以点表示。c:內建字型名称,共12种(1: 8*12 dots 2: 12*20 dots 3: 16*24 dots 4: 24*32 dots 5: 32*48 dots TST24.BF2: 繁體中文 24*24 TST16.BF2: 繁體中文 16*16 TTT24.BF2: 繁體中文 24*24 (電信碼) TSS24.BF2: 簡體中文 24*24 TSS16.BF2: 簡體中文 16*16 K: 韓文 24*24 L: 韓文 16*16 )d:字符串,旋转角度e:字符串,X方向放大倍率1-8f:字符串,Y方向放大倍率1-8g:字符串,打印内容ActiveXwindowsfont(a,b,c,d,e,f,g,h)说明:使用Windows TTF字体打印文字。参数:a:整数类型,文字X方向起始点,以点表示。b:整数类型,文字Y方向起始点,以点表示。c:整数类型,字体高度,以点表示。d:整数类型,旋转角度,逆时针方向旋转。0-旋转0°,90-旋转90°,180-旋转180°,270-旋转270°。e:整数类型,字体外形。0:标签;1:斜体;2:粗体;3:粗斜体。f:整数类型,下划线,0:无下划线;1:加下划线。g:字符串类型,字体名称。如:Arial,Times new Roman。h:字符串类型,打印文字内容。*/
//    TSCObj.ActiveXwindowsfont (500, 200, 48, 90, 0, 0, "Arial", "\u7f16\u7801");TSCObj.ActiveXwindowsfont (260, 60, 60, 0, 2, 0, "Arial", "XX专用");//var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';var cmd = 'QRCODE 80,80,H,7,A,0,M2,S1,\"'+"123456789"+'\"';TSCObj.ActiveXsendcommand(cmd);TSCObj.ActiveXwindowsfont (280, 150, 40, 0, 0, 0, "Arial", "123456789");TSCObj.ActiveXwindowsfont (180, 260, 30, 0, 0, 0, "Arial", "XXXXXXXX");TSCObj.ActiveXprintlabel ("1","1");//(打印份数,每页打印张数)TSCObj.ActiveXclearbuffer();//清除TSCObj.ActiveXcloseport();//关闭打印端口
}</script>

Java调用TSC打印机进行打印相关推荐

  1. JAVA调用TSC打印机打印标签(二维码,数据等)超详细!!

    本文打印机型号: TSC MA3400P 后端调用tsc打印机是通过DLL来进行调用的,首先你需要两个TSC文件直接复制到项目目录下边即可 可以直接去官网下载:https://www.chinatsc ...

  2. java调用默认打印机,打印小票(80mm)

    一.默认打印机工具类 package vpos.zs.print;import net.sf.json.JSONObject;import java.util.Map; import java.uti ...

  3. java 调用TSC打印机

    JNA 依赖 <dependency><groupId>com.sun.jna</groupId><artifactId>jna</artifac ...

  4. Java调用小票打印机(型号TM-288B)打印小票 (上)

    Java调用小票打印机(型号TM-288B)打印小票 (上) 项目需求需要用Java调用小票打印机打印小票,网上查了很多资料然后慢慢调试最后算成功了 本地安装小票打印机驱动 根据自己的型号下载驱动(此 ...

  5. 使用JAVA调用热敏打印机接口实现打印功能

    一 前言 前段时间在开发项目时,需要实现打印的功能,有着封装好的工具类,不过使用的时候有些地方还是遇到了一些小坑,在此整理出来希望对大家有所帮助. 二 准备工作 1.实体类和工具类 实体类 packa ...

  6. 微信小程序调用小票打印机实现打印订单

    随着微信小程序的出现,微信已经完全占据了我们的生活,智能化互联网时代的到来,带给我们的便利我想不用说大家都是深有体会,随着小程序的火爆,随之带动着用户对打印的需求,那么,微信小程序是如何对接打印机的呢 ...

  7. java调用博思得打印机的心得

    转载:http://www.zuidai和ma.com/blog/2793091475983360.htm www.zuidai ma.com居然是违禁字符,我也是醉了,所以在www.zuidai后面 ...

  8. JAVA调用小票打印机

    因公司开发需求,需要用到打印机打印彩票投注单,所以要用到小票打印机.小票打印机是SNBC新北洋. 这个类型的打印机可以连接安卓设备,也可以连接电脑主机.我采用的是连接电脑主机进行打印. 1.将打印机连 ...

  9. java调用默认打印机打印发货标签

    效果: 实现:主入口 public static void main(String[] args) {//获取默认的打印机PrintService defaultPrint = PrintServic ...

最新文章

  1. java 文件md5校验_Java 获取 文件md5校验码
  2. hbuilder入门之基本配置(php)
  3. 用python的字典实现简单的通讯录
  4. 201521123078 《Java程序设计》第6周学习总结
  5. 青岛外卖小哥帮崩溃程序员写代码,网友看完破防了:佩服又感动。
  6. android app启动过程
  7. ArcGIS API for Silverlight开发入门准备
  8. java异常中的Error和Exception的区别是什么?
  9. 精品课程教学网站中系统设计如何写
  10. Android mes系统源码,基于Android的MES监控系统设计与开发
  11. ObjectARX 2018 + AutoCAD2018 + VS2018 C# 创建第一个 Hello word程序
  12. 微信小程序 import文件大小限制
  13. RHEL7平台下电信拨号上网配置
  14. 亲爱的,60句感人歌词,有没有一句触动了你
  15. CPU微指令相关概念
  16. 电脑连接不上手机和路由器热点解决办法
  17. C++数组初始化及定义
  18. Vue3 全家桶 + Element Plus + Vite + TypeScript + Eslint 项目配置最佳实践
  19. freemarker(FTL)常见语法大全
  20. 花滑三周连跳_阿克塞尔三周PK四周跳 花滑女单正式进入新纪元

热门文章

  1. 笔记本修改无线网卡MAC地址
  2. 疫情期间如何做到远程监控,实现设备的“智慧把守”?
  3. Java对象大小内幕浅析
  4. 虚拟化在防泄密领域的缺点
  5. vm本地虚拟机导入服务器,vmware虚拟机导入到云服务器
  6. 个人对价值观的认识与感受
  7. 语音计算机打字教程,win7电脑打字使用语音输入法打字的超详细教程
  8. 用javascript根据当前年月获得当前季度
  9. Kubernetes K8S之Taints污点与Tolerations容忍详解
  10. 【洛谷】P2197 【模板】nim 游戏