java连接打印机并进行打印
连接同网段的打印机
1.先查询本网段的在线打印机名称
public JsonResult<List<String>> getPrinterList() {List<String> list = new ArrayList<>();HashPrintRequestAttributeSet requestAttributeSet = new HashPrintRequestAttributeSet();DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;//查找所有的可用的打印服务PrintService[] printService = PrintServiceLookup.lookupPrintServices(flavor, requestAttributeSet);if (printService == null || printService.length == 0) {log.info("打印获取失败,未找到可用打印机,请检查。");}if (printService != null) {for (PrintService print : printService) {list.add(print.getName());}}return JsonResult.ok(list);}
因为打印的时候只需要打印机名称就行了,所以这里只获取了打印机名称。
2.再通过打印机名称来进行打印操作
方法入参为打印机名称和文件。
public Boolean printFile(String printerName, MultipartFile multipartFile) {}
匹配打印机名称
if (printerName != null) {// 查找并设置打印机//获得本台电脑连接的所有打印机PrintService[] printServices = PrinterJob.lookupPrintServices();if(printServices == null || printServices.length == 0) {System.out.print("打印失败,未找到可用打印机,请检查。");return false;}PrintService printService = null;//匹配指定打印机for (int i = 0;i < printServices.length; i++) {System.out.println(printServices[i].getName());if (printServices[i].getName().contains(printerName)) {printService = printServices[i];break;}}if(printService!=null){printJob.setPrintService(printService);}else{System.out.print("打印失败,未找到名称为" + printerName + "的打印机,请检查。");return false;}}
设置纸张大小、方向、页数等信息
//设置纸张及缩放PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);//设置多页打印Book book = new Book();PageFormat pageFormat = new PageFormat();//设置打印方向pageFormat.setOrientation(PageFormat.PORTRAIT);//纵向pageFormat.setPaper(getPaper());//设置纸张book.append(pdfPrintable, pageFormat, document.getNumberOfPages());printJob.setPageable(book);printJob.setCopies(1);//设置打印份数//添加打印属性HashPrintRequestAttributeSet pars = new HashPrintRequestAttributeSet();pars.add(Sides.DUPLEX); //设置单双页
最后进行打印
printJob.print(pars);
注意这里需要捕获异常
完整打印代码如下:
public Boolean printFile(String printerName, MultipartFile multipartFile) {PDDocument document = null;try {File file = new File(multipartFile.getOriginalFilename());FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);document = PDDocument.load(file);PrinterJob printJob = PrinterJob.getPrinterJob();printJob.setJobName(file.getName());if (printerName != null) {// 查找并设置打印机//获得本台电脑连接的所有打印机PrintService[] printServices = PrinterJob.lookupPrintServices();if(printServices == null || printServices.length == 0) {System.out.print("打印失败,未找到可用打印机,请检查。");return false;}PrintService printService = null;//匹配指定打印机for (int i = 0;i < printServices.length; i++) {System.out.println(printServices[i].getName());if (printServices[i].getName().contains(printerName)) {printService = printServices[i];break;}}if(printService!=null){printJob.setPrintService(printService);}else{System.out.print("打印失败,未找到名称为" + printerName + "的打印机,请检查。");return false;}}//设置纸张及缩放PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);//设置多页打印Book book = new Book();PageFormat pageFormat = new PageFormat();//设置打印方向pageFormat.setOrientation(PageFormat.PORTRAIT);//纵向pageFormat.setPaper(getPaper());//设置纸张book.append(pdfPrintable, pageFormat, document.getNumberOfPages());printJob.setPageable(book);printJob.setCopies(1);//设置打印份数//添加打印属性HashPrintRequestAttributeSet pars = new HashPrintRequestAttributeSet();pars.add(Sides.DUPLEX); //设置单双页printJob.print(pars);} catch (PrinterException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (document != null) {try {document.close();} catch (IOException e) {e.printStackTrace();} }}return true;}
以上方法自己用于本地启动后连接本地打印机打印,如果服务发布到服务器上,那么打印机和服务所处的网段不一致,就搜索不到打印机,导致无法打印。
解决以上问题可以代码通过socket连接指定ip,在指定ip搜索打印机。
java连接打印机并进行打印相关推荐
- java 连接打印机实现打印PDF文件的功能
java 连接打印机打印PDF文件 需求背景是导出excel并且打印,excel导出设置和转PDF网上有很多资料,本文只记录连接打印机打印PDF的部分. 1: 需要引入maven配置 <depe ...
- 使用nodejs(ipp和html-pdf-node)实现连接打印机后端静默打印html文件
使用nodejs实现连接打印机后端静默打印 需求 需求分析 知识点补充 实现接口 需求 标签打印需要进行静默打印,前端主要直接生成html文件,此时需要调用接口进行打印 需求分析 由于前端直接生成的模 ...
- 电脑如何连接打印机以及共享打印
电脑如何连接打印机以及共享打印 一.安装打印机驱动 百度搜索对应打印机驱动-下载-安装 二.添加打印机 打开设备和打印机 添加打印机 搜索打印机 安装打印机成功 打印测试页 二.设置打印机(共享打印机 ...
- Java连接打印机打印二维码
首先导入依赖 implementation 'com.google.zxing:core:3.5.1' implementation 'com.google.zxing:javase:3.5.1' 1 ...
- 局域网电脑打印机显示未连接到服务器,win7局域网连接打印机显示本地打印后台处理程序服务没有运行...
连接打印机的电脑是xp系统,打印机型号:hp laser jet 1010,开启网络共享,在局域网里用win7系统添加打印机的时候出现了如下对话框: 找了很多资料讲的不是很全面.因此把解决的过程写下来 ...
- oracle连接打印机,使用 LP 打印命令设置网络连接的打印机
使用 LP 打印命令设置网络连接的打印机 网络连接的打印机是直接连接到网络的硬件设备.可以从打印服务器访问此打印机,而不必通过电缆以物理方式将打印机连接到打印服务器.网络连接的打印机具有其自己的系统名 ...
- JAVA连接打印机打印小票、产品信息。标签打印机
2018年写了一个标签打印机(TSC TX600),标签打印程序,实现功能是通过串口读出设备ID生成二维码和设备信息,用于esp8266 smart config配网.源码和资料:https://do ...
- java连接打印机_JAVA实现连接本地打印机并打印文件的实现代码
实现代码一 import javax.print.*; import javax.print.attribute.DocAttributeSet; import javax.print.attribu ...
- java连接打印机打印PDF
核心代码: public class PrintService {private static final Logger logger = LoggerFactory.getLogger(PrintS ...
- 打印驱动已安装,电脑上网正常,电脑无法连接打印机,无法打印
一同事遇到奇怪的问题: 办公室一台打印机,三星SCX-4824HN,其他人都能通过局域网WIFI打印,就她的电脑(Win7)不行. 重新安装打印驱动之后,"设备和打印机"中的,该打 ...
最新文章
- git拉取远程分支并创建本地分支
- signature=52ceb41d49ce2ed43689f29f1663e802,SINGLE SIGN ON WITH MULTIPLE AUTHENTICATION FACTORS
- 第02篇:C#星夜拾遗之Windows窗体
- SAP WebIDE:how to enable context API reference
- java aspectj_Java:AspectJ的异常翻译
- HTML修改价格文字,HTML打折计算价格实现原理与脚本代码
- svn的使用总结(待补充)
- 基于SpringBoot大学生数码租赁网站答辩PPT模板
- 交叉熵损失的来源、说明、求导与pytorch实现
- Excel工作簿的拆分
- 致远OA ajaxAction formulaManager 文件上传漏洞
- 开源项目——小Q聊天机器人V1.0
- 2020第二届长安杯电子数据竞赛试题(二次修改版),本人亲解,尽量做到细致仔细,镜像百度网盘奉上,建议大家联系一下,弘连题目还是很好的(强烈推荐)
- matlab编程测试教程,Matlab实验1 MATLAB的基本操作、编程基础
- MySQL权限与安全管理之权限表与账户管理
- 上班族做什么副业赚钱?全面解析副业赚钱模式!
- 婚纱行业怎么做好有效的营销方案来打动客户?
- C++ 结构体、成员函数、结构体指针的使用
- 上海互联网公司和生活成本
- 12306铁道部订票网站瘫痪 技术惹的祸?