栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java如何调用TSC打印机进行打印详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java如何调用TSC打印机进行打印详解

前言

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

第一种后台打印:    

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

 PrintServiceLookup.lookupMultiDocPrintServices(flavors, attributes);

可执行代码如下:

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中相关的设置为启用,代码如下:



总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对考高分网的支持。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/140500.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号