java实现打印的功能

一、java后台获取打印机

  • 首先需要引入依赖
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.25</version>
</dependency>
实现打印的核心关键是awt中的PrinterJob.lookupPrintServices()方法。当时的需求是用打印机打印pdf文件,所有在方法中传入了三个参数(name 打印机的名字,path pdf文件的路径,pages 打印的页数)下面是将方法封装成为一个工具类,方便在使用时直接调用。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;
import org.apache.pdfbox.printing.PDFPrintable;
import org.apache.pdfbox.printing.Scaling;import javax.print.PrintService;
import java.awt.print.*;
import java.io.File;
import java.io.IOException;public class PrintUtil {public static void Print(String name ,String path,Integer pages) throws IOException, PrinterException {// 使用打印机的名称// String printName = "HP LaserJet Pro M201-M202 PCL 6";String printName = name;String pdfPath = path;File file = new File(pdfPath);// 读取pdf文件PDDocument document = PDDocument.load(file);// 创建打印任务PrinterJob job = PrinterJob.getPrinterJob();// 遍历所有打印机的名称for (PrintService ps : PrinterJob.lookupPrintServices()) {String psName = ps.toString();// 选用指定打印机if (psName.equals(printName)) {//isChoose = true;job.setPrintService(ps);break;}}job.setPageable(new PDFPageable(document));Paper paper = new Paper();// 设置打印纸张大小paper.setSize(598, 842); // 1/72 inch// 设置打印位置 坐标paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins// custom page formatPageFormat pageFormat = new PageFormat();pageFormat.setPaper(paper);// override the page formatBook book = new Book();// append all pages 设置一些属性 是否缩放 打印张数等book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, pages);job.setPageable(book);// 开始打印job.print();}}

二、在前端实现打印机的获取,并以下拉框的形式显示

效果如下图:

PrintServiceLookup.lookupPrintServices()也同样可以获取到打印机。这里实现的是获取电脑上的打印机,并将其显示在前端的页面。

首先是后台的实现

  • controller的实现
 //获取打印机@GetMapping("/getPrint")public AjaxResult getPrint(){return AjaxResult.success(dataLabelService.getPrint());}
  • service层的方法
List<String> getPrint();
  • impl的方法
public List<String> getPrint() {List<String> listPrints = new ArrayList<>();//构建打印请求属性集PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();//设置打印格式,autosense 自动类型DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;for (PrintService ps : PrintServiceLookup.lookupPrintServices(flavor,pras)) {String psName = ps.toString();listPrints.add(psName);}return listPrints;}

vue前端的实现

可以看到后台的接口返回的是一个list的结果,因此在前端同样要用list来接收。
//定义参数,获取本地打印机printNameList:[],
    //得到打印机的名字getPrint() {getPrint().then((response) => {//console.log(response);this.printNameList = response.data;});},
上面的实现适合在本地开发时,获取打印机并打印。当将项目部署在服务器时,如果服务器上没有安装打印机,会发现获取不到打印机。
因此可以通过前端来直接获取打印机。见另一篇文章。

vue结合Lodop前端实现打印机的获取及打印
https://editor.csdn.net/md?not_checkout=1&articleId=122932554

java及vue实现获取电脑打印机及打印功能相关推荐

  1. VUE整合VUE-PRINT-NB实现前端打印功能

    VUE整合VUE-PRINT-NB实现前端打印功能 插件安装 npm install vue-print-nb --save 插件安装时最好在package.json中同时加入依赖信息,便于项目上其他 ...

  2. Vue实现PDF导出和打印功能

    在Vue页面上实现PDF导出和打印功能依赖于两个npm插件,分别为vue-to-pdf和vue-easy-printer. 安装命令: npm i vue-to-pdf --save npm i vu ...

  3. vue使用print.js实现打印功能,以及添加打印机

    print.js 一个javascript库,可以实现打印功能 github地址 github地址: https://github.com/crabbly/print.js 官网地址 https:// ...

  4. java如何刷新输出_如何刷新打印功能的输出?

    如何刷新Python打印输出? 我建议五种方法: 在Python 3中,调用 print(..., flush=True) (在Python 2的print函数中不提供flush参数,并且print语 ...

  5. Vue使用PrintJS实现页面打印功能

    说明 大家好,我是呆小杰,收到一个需求,要求实现 拼接成表格并能一键回填数据并能打印成A4大小(或者生成pdf)的功能. 实际上回填数据以及拼接部分都很简单,稍微陌生的就是调用浏览器打印功能并将页面内 ...

  6. ArcGIS API+Canvas +Vue框架 制作前端地图打印功能

    将ArcGIS Pro 桌面打印制图功能搬到前端页面上 实现BS端打印制图功能 简介 地图框 冲突 拖拽 放大缩小 标题 图例 图例储存 图例获取 图例摆放 比例尺 scale属性 格式化 指北针 预 ...

  7. vue中获取短信验证码功能IOS手机问题

    vue使用中发现了一个问题,由于ios手机获取短信验证码后,验证码会直接显示在键盘上,点击键盘上的验证码即可给对应的input赋值,但是在项目开发中发现输入框的取值为空 经过排查是因为通过v-mode ...

  8. Vue - 下载打印功能,将页面下载打印为 pdf 格式文件(vue-print-nb)

    Vue 使用 vue-print-nb 插件实现打印功能 一. vue-print-nb 的使用 1.1 安装 vue-print-nb 1.2. 引入vue-print-nb 二. 一个打印实例 使 ...

  9. vue html页面打印功能vue-print-nb

    vue项目中,HTML页面打印功能 组件vue-print-nb 源码: https://github.com/shengbid/vue-print, https://github.com/sheng ...

最新文章

  1. smartClient 2--可视化组件
  2. Spring-依赖注入
  3. libreoffice_利用Excel或LibreOffice的业务输入进行单元测试约束
  4. mock模拟接口测试 vue_vue+mock.js实现前后端分离
  5. 两个链表第一个公共节点
  6. java炫酷龙卷风源码_Java-使用二叉树实现快速排序-遁地龙卷风
  7. 读书笔记-----Oracle字符处理函数列表
  8. python飞机大战类_500行代码,教你用python写个微信飞机大战
  9. Oracle下载12c安装包
  10. 控制系统数字仿真-基于MATLAB实现四阶龙格库塔法
  11. FIT2CLOUD飞致云被权威研究机构评选为中国混合云管理软件领导者
  12. 笔记31 笨办法学python练习39可爱的词典
  13. oc宏定义的简单理解
  14. 服务器Raid5磁盘阵列数据恢复步骤和数据恢复方法
  15. WP下载,WP源码下载,WP模板主题下载
  16. 百度深度学习实验室(IDL)招聘算法实习生
  17. 函数的原函数,可积性和变上限积分之间的区别和联系
  18. bubbles html5游戏源码,html5 canvas弹性气泡爆破 | 撒花动画
  19. html中菜单触碰变色,利用css filter实现菜单图片变色效果
  20. HTML女朋友生日祝福、老婆生日快乐源代码,可定制照片+音乐+表白话

热门文章

  1. STM32——理解中断与中断配置
  2. linux php重启
  3. 基于RFID技术的智能门禁系统设计(控制部分)
  4. 附件四:攻击方评分标准.docx
  5. python散点图图例显示标记点类型_python – matplotlib散点图中的标记点
  6. 大数据时代:大数据发展必备三个条件
  7. 【硬见小百科】一些硬件电路技术经验整理
  8. rsync 同步本地文件到远端
  9. android 自定义view 加载图片,Android自定义View基础开发之图片加载进度条
  10. 单片机-结构体函数指针高级使用方法