用Java编写一个打印标签客户端

点击运行启动会打开首页

可以点击预览打印

点击打印可测试成功

打印机结果

前端用的是thymeleaf

代码片段

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>首页</title><link rel="icon" th:href="@{/title.ico}" type="image/x-icon"/><!-- Bootstrap core CSS --><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"><script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script><script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body><div class="container-fluid"><div class="col-sm-12 column"><ol class="breadcrumb"><li class="active">打印机客户端</li><li class="active">打印机管理</li></ol>
<!--        <a th:href="@{/printService/download}">操作手册.PDF</a> <br/>--><div class="table-responsive"><table class="table table-striped "><thead><tr><th style="text-align:center">打印机名称</th><th style="text-align:center">打印机状态</th></tr></thead><tbody><!--这里的 policyPublishDetailDtoList是 Controller 通过 model.addAttribute("policyPublishDetailDtoList", list);传过来的th:each th:text都是thymeleaf中常用的标签--><tr th:each="printInfoDto:${printInfoVoDtoList}"><td th:text="${printInfoDto.printName}" style="text-align:center;vertical-align:middle;"></td><td th:text="${printInfoDto.printStatus}" style="text-align:center;vertical-align:middle;"></td><td><div class="btn-group" th:if="${printInfoDto.status}"><a class="btn btn-default" th:href="@{/printService/preview(printName=${printInfoDto.printName})}" th:text="${'预览 | ' + printInfoDto.printName}"></a></div></td></tr></tbody></table></div></div>
</div>
</body>
</html>

后端代码

  /*** 得到全部打印机*/@GetMapping("/printList")public String printList(Model model, HttpServletRequest request) {PrintInfoVo printInfoVo;List<PrintInfoVo> printInfoVoList = new ArrayList<>();List<String> totalPrinterList = PrintUtils.getTotalPrinterList();if (totalPrinterList.size() > 0) {//在线打印机Map<String, String> map = PrintUtils.getZxPrinterMap();//默认打印机String defaultPrintName = PrintUtils.getDefaultPrintName();// 遍历所有打印机的名称for (String printer : totalPrinterList) {printInfoVo = new PrintInfoVo();printInfoVo.setStatus(false);if (printer.equals(defaultPrintName)) {//默认打印机printInfoVo.setPrintName(printer);String PrintStatus = "默认打印机";if (map.get(printer) == null) {printInfoVo.setPrintStatus(PrintStatus + "-脱机");} else {printInfoVo.setPrintStatus(PrintStatus + "-在线");printInfoVo.setStatus(true);}} else {//其他打印机printInfoVo.setPrintName(printer);if (map.get(printer) == null) {printInfoVo.setPrintStatus("脱机");} else {printInfoVo.setPrintStatus("在线");}}printInfoVoList.add(printInfoVo);}}model.addAttribute("printInfoVoDtoList", printInfoVoList);model.addAttribute("printInfoDto", new PrintInfoVo());request.getSession().removeAttribute("relativePath");return "printList";}
/*** 打印标签*/@GetMapping("/testPrint")public String testPrint(String printName, Model model, HttpServletRequest request) {//调用打印逻辑进行打印PrintServer printServer = new PrintServer();Result result = printServer.print(PrintUtils.InitialDateString);model.addAttribute("printName", printName);model.addAttribute("result", result.getMsg());request.getSession().removeAttribute("relativePath");return "result";}

页面上预览图片和真实打印机打出来的不一致是正常的因为这是测试打印(测试本地电脑是否符合使用打印机客户端调用bartender进行打印)

JAVA调用Bartender进行标签打印(可本地用打印机客户端进行测试打印,【云上的项目】可通过WebSocket进行通讯进行打印)相关推荐

  1. Java调用Bartender控制条码打印机

    官方提供的主要是C#支持. 基于java调用bartender二次开发官方给了一份1998年的J#代码,,,完全用不了,,,百度谷歌搜索万能的网友的答案,发现也没有可参考的.. 最后想到了之前用到了一 ...

  2. 从一循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo“,在5的倍数行打印biz,在7的倍数行打印baz

    从一循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出"foo",在5的倍数行打印biz,在7的倍数行打印baz for (int i = 1; i <= 150 ...

  3. LabVIEW 调用 BarTender 进行标签打印

    在打印标签中,BarTender无疑是标签软件中的王者. 提供技术支持/调用源码/开发成品软件:https://item.taobao.com/item.htm?ft=t&id=6282409 ...

  4. java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码

    最近遇到了一个很头疼的问题,我们的项目移动端需要一个读pdf的功能,但是手机端开发人员说移动端是用jquerymobile做的,不能直接甩pdf文件过去(原因是pdf文件太大),于是乎我们想到了2个解 ...

  5. 本地项目如何连接码云上的项目

    同事给我发了一个项目,我删掉项目中的.git 这个项目就是我的本地项目了,但是我要提交到码云地址与同事一块开发,所以必须连接上码云的地址 首先进入码云项目复制项目链接 然后打开cmd 初始化项目 gi ...

  6. java调用C或者C++动态库dll

    java调用C或者C++动态库dll,本文章使用的是IntelliJ IDEA Community Edition 2021.2.3版本测试的 1.新建项目 linjie.demo,添加类HelloL ...

  7. 码云上传代码添加标签_[Android] 发布码云(Gitee)项目到JitPack(最全完整流程)

    最近把github上的代码都转移到了码云上,而且github上的仓库可以很方便的迁移到码云,所以老代码的迁移问题不用考虑. 之前使用 JCenter 发布了一个 GitHub 开源项目,JCenter ...

  8. 码云上传本地文件夹,码云只能上传20个文件的突破方法

    码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...

  9. 码云上传文件夹_码云上传本地文件夹,码云只能上传20个文件的突破方法

    码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...

最新文章

  1. Struts2中Action接收参数
  2. ensp中ap获取不到ip_对比网络模拟器软件,Cisco Packet Tracer、华为eNSP、H3C Cloud Lab...
  3. Laravel中一些要记住 的写法
  4. 封装案例-创建士兵类-完成初始化方法
  5. 一文带你领略人工神经网络激荡70年
  6. 陆奇:疫情下的创业者,最不能缺这两大能力
  7. 二叉树层序遍历算法实现
  8. 清理redis集群的所有数据
  9. lisp角度转换弪度_弧度角度换算(弧度角度换算器)
  10. 2021年美容师(中级)考试题及美容师(中级)模拟考试
  11. selenium模拟登陆163邮箱
  12. 深度学习—利用TensorFlow2实现狗狗品种品种(mobilenet实现)
  13. Matplotlib直方图
  14. jQuery实现可移动(draggable)和可缩放(sizable)网页元素
  15. 可导区间中的唯一驻点一定是极值点吗?
  16. 2021-2-26编程语言知识点整理
  17. Common-pool源码编译——小例子
  18. 北京计算机网络主考院校6,北京自考各专业主考院校一览表
  19. springBoot集成阿里云企业邮箱
  20. 右击选项太多了怎么删除|如何删除右击多余的菜单

热门文章

  1. 出现RuntimeWarning: Glyph 39057 missing from current font.的解决办法:
  2. 超级终端测试通过的 ymodem 协议
  3. 上网行为管理软件能预防电脑中病毒吗?
  4. 名帖76 薛稷 楷书《涅槃经》
  5. 使用element-ui的checkbox插件报错vue.runtime.esm.js?2b0e:1888 TypeError: Cannot read property 'length' of un
  6. MATLAB中多行注释以及取消的快捷键
  7. 北京工业大学c语言网上作业,北京工业大学C语言部分练习答案.docx
  8. 【连载】计算机组成原理 --- 第五章 中央处理器
  9. 在线运行的Linux环境
  10. python算法之组合总和