200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > web应用 远程调用佳博打印机进行条码打印(详细教程)

web应用 远程调用佳博打印机进行条码打印(详细教程)

时间:2021-12-03 12:35:49

相关推荐

web应用 远程调用佳博打印机进行条码打印(详细教程)

需求:

通过html调用本地服务启动打印机,带参数去打印不同内容。

步骤:

1.生成可直接执行的exe程序。

2. 注册服务。

3. 前端调用测试。

1.生成可直接执行的exe程序

1.1 前提:代码测试已经通过,可看我的另一篇文章(含代码)。

1.2 按如图步骤生成jar文件

如上图所示,生成了PrintLaben.jar的文件。

1.3 按如图步骤生成exe文件

① 先将exe4j软件下载安装

链接:/s/11p3jewLX4tSkxCXzOAbhWA

提取码:wg8j

一直下一步即可安装完成。

② 打开exe4j软件,按照该视频可进行操作,注意一定要生成没有java,带jre的exe运行程序。如何将idea的java程序打包成exe (新版,可以在没有java的电脑下运行)_哔哩哔哩_bilibili

③ 经过②步骤,拿到exe文件跟jre的文件夹,保持在同一目录下面,再把这个TSCLIB.dll的打印机本地函数库放到同一目录下,这个库可以TODO一篇文章中获取。

2.注册服务

2.1 新建一个print.reg的注册服务文件

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\print]@="print""URL Protocol"=""[HKEY_CLASSES_ROOT\print\DefaultIcon]@="D:\\develope\\washPrint\\PrintLabel.exe"[HKEY_CLASSES_ROOT\print\shell]@=""[HKEY_CLASSES_ROOT\print\shell\open]@="" [HKEY_CLASSES_ROOT\print\shell\open\command]@="\"D:\\develope\\washPrint\\PrintLabel.exe\" \"%1\" "

如上图所示,其中

D:\\develope\\washPrint\\PrintLabel.exe : 是你生成的exe程序的全路径地址

\"%1\" :是代表可以带参数

2.2 新建后双击该文件

确认即可,打开cmd窗口,输入regedit打开,如下图所示

如上图所示,即注册成功

2.3 打开浏览器,输入print://即可调用到PrintLabel.exe程序。

3. 前端调用程序

<a href="" id="printLinks"><el-button type="primary">打印</el-button></a>

这里的需求是,带过去的参数是变化的,所以在JS中采用下列代码获取,但是注意这里要在点击这个打印前去做设置,不然传过去的参数就是空。

var a = document.getElementById('printLinks')a.setAttribute('href', '你需要设置的内容')

中文乱码问题(通过加解密算法解决):

用了好多方式都有问题:索性就是在前端出发带参数将内容进行加密

//引入加密板块import CryptoJS from 'crypto-js/crypto-js'//加密板块代码const key = '1111122222333334'var secret = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(printContent), CryptoJS.enc.Utf8.parse(key), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString()

在打印的时候进行解密

//解密的依赖<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.14</version></dependency>//密钥 前后台一致16位private static final String KEY = "1111122222333334";//参数分别代表 算法名称/加密模式/数据填充方式private static final String ALGORITHMESTR = "AES/ECB/PKCS5Padding";//解密算法public static String desEncrypt(String data) throws Exception {//decode解密//让程序自动创建keyGenerator对象,并告诉其用AES处理KeyGenerator kgen = KeyGenerator.getInstance("AES");//告诉秘钥生成器处理模式是128bit,也就是16位kgen.init(128);//拿到秘钥,KEY是我们刚刚定义的SecretKeySpec key1 = new SecretKeySpec(KEY.getBytes(), "AES");//创建密码器[算法名/加密模式/数据填充模式]Cipher cipher = Cipher.getInstance(ALGORITHMESTR);//表示密码器要使用key进行解码cipher.init(Cipher.DECRYPT_MODE, key1);//根据刚刚加密得到的结果,我们需要把info.getPassword字符串通过base64编码成cipher能识别的byte数组byte[] result = cipher.doFinal(Base64.decodeBase64(data));//测试通过,前后端AES一致,后端能转AES码[需要转为string]System.out.println("decode:" + new String(result, StandardCharsets.UTF_8));return new String(result, StandardCharsets.UTF_8);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。