连接同网段的打印机

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连接打印机并进行打印相关推荐

  1. java 连接打印机实现打印PDF文件的功能

    java 连接打印机打印PDF文件 需求背景是导出excel并且打印,excel导出设置和转PDF网上有很多资料,本文只记录连接打印机打印PDF的部分. 1: 需要引入maven配置 <depe ...

  2. 使用nodejs(ipp和html-pdf-node)实现连接打印机后端静默打印html文件

    使用nodejs实现连接打印机后端静默打印 需求 需求分析 知识点补充 实现接口 需求 标签打印需要进行静默打印,前端主要直接生成html文件,此时需要调用接口进行打印 需求分析 由于前端直接生成的模 ...

  3. 电脑如何连接打印机以及共享打印

    电脑如何连接打印机以及共享打印 一.安装打印机驱动 百度搜索对应打印机驱动-下载-安装 二.添加打印机 打开设备和打印机 添加打印机 搜索打印机 安装打印机成功 打印测试页 二.设置打印机(共享打印机 ...

  4. Java连接打印机打印二维码

    首先导入依赖 implementation 'com.google.zxing:core:3.5.1' implementation 'com.google.zxing:javase:3.5.1' 1 ...

  5. 局域网电脑打印机显示未连接到服务器,win7局域网连接打印机显示本地打印后台处理程序服务没有运行...

    连接打印机的电脑是xp系统,打印机型号:hp laser jet 1010,开启网络共享,在局域网里用win7系统添加打印机的时候出现了如下对话框: 找了很多资料讲的不是很全面.因此把解决的过程写下来 ...

  6. oracle连接打印机,使用 LP 打印命令设置网络连接的打印机

    使用 LP 打印命令设置网络连接的打印机 网络连接的打印机是直接连接到网络的硬件设备.可以从打印服务器访问此打印机,而不必通过电缆以物理方式将打印机连接到打印服务器.网络连接的打印机具有其自己的系统名 ...

  7. JAVA连接打印机打印小票、产品信息。标签打印机

    2018年写了一个标签打印机(TSC TX600),标签打印程序,实现功能是通过串口读出设备ID生成二维码和设备信息,用于esp8266 smart config配网.源码和资料:https://do ...

  8. java连接打印机_JAVA实现连接本地打印机并打印文件的实现代码

    实现代码一 import javax.print.*; import javax.print.attribute.DocAttributeSet; import javax.print.attribu ...

  9. java连接打印机打印PDF

    核心代码: public class PrintService {private static final Logger logger = LoggerFactory.getLogger(PrintS ...

  10. 打印驱动已安装,电脑上网正常,电脑无法连接打印机,无法打印

    一同事遇到奇怪的问题: 办公室一台打印机,三星SCX-4824HN,其他人都能通过局域网WIFI打印,就她的电脑(Win7)不行. 重新安装打印驱动之后,"设备和打印机"中的,该打 ...

最新文章

  1. git拉取远程分支并创建本地分支
  2. signature=52ceb41d49ce2ed43689f29f1663e802,SINGLE SIGN ON WITH MULTIPLE AUTHENTICATION FACTORS
  3. 第02篇:C#星夜拾遗之Windows窗体
  4. SAP WebIDE:how to enable context API reference
  5. java aspectj_Java:AspectJ的异常翻译
  6. HTML修改价格文字,HTML打折计算价格实现原理与脚本代码
  7. svn的使用总结(待补充)
  8. 基于SpringBoot大学生数码租赁网站答辩PPT模板
  9. 交叉熵损失的来源、说明、求导与pytorch实现
  10. Excel工作簿的拆分
  11. 致远OA ajaxAction formulaManager 文件上传漏洞
  12. 开源项目——小Q聊天机器人V1.0
  13. 2020第二届长安杯电子数据竞赛试题(二次修改版),本人亲解,尽量做到细致仔细,镜像百度网盘奉上,建议大家联系一下,弘连题目还是很好的(强烈推荐)
  14. matlab编程测试教程,Matlab实验1 MATLAB的基本操作、编程基础
  15. MySQL权限与安全管理之权限表与账户管理
  16. 上班族做什么副业赚钱?全面解析副业赚钱模式!
  17. 婚纱行业怎么做好有效的营销方案来打动客户?
  18. C++ 结构体、成员函数、结构体指针的使用
  19. 上海互联网公司和生活成本
  20. 12306铁道部订票网站瘫痪 技术惹的祸?

热门文章

  1. linux安全工具(RKHunter)
  2. 资金账户、证券账户及银行账户
  3. 【python 淘宝爬虫】淘宝信誉分抓取
  4. 解决beyond compare秘钥被吊销的问题
  5. dropbox连接不上解决方法
  6. [Android app] 本地wifi密码查看器源码
  7. 使用JS监听键盘按下事件(keydown event)
  8. [ahk]热键呼叫QQ经常聊天的人
  9. mt管理器去除应用广告
  10. 使用RMAN备份时应如何处置归档日志文件