最近跟着项目组在做项目,分到了打印机这个任务,顺便记录一下。
首先本地最好安装一下打印机的驱动,然后连上打印机开始测试!

Java调用打印机打印图片,文本都是很简单的,如下代码:

    /*** 通过 IP+端口 连接打印机打印文件* @param filePath* @throws Exception*/public static void print2(String filePath) throws Exception{String ip="192.168.1.1";//打印机ipFile file = new File(filePath); // 获取选择的文件Socket socket =  new Socket(ip, 9100);OutputStream out = socket.getOutputStream();FileInputStream fis = new FileInputStream(file);//建立数组byte[] buf = new byte[1024];int len = 0;//判断是否读到文件末尾while((len=fis.read(buf)) != -1){out.write(buf, 0, len);}//告诉服务端,文件已传输完毕socket.shutdownOutput();socket.close();fis.close();}

然后我的任务是需要打印PDF,这个就有点麻烦,因为JDK自带的输入输出流是搞不定的,里面有文本还有有图片这种二进制文件,所以得采取其他办法。刚开始的思路是曲线实现,就是Java调用打印机服务API,而后发现也有点麻烦,一上百度之后发现Apache有个PDFBox的工具包,立马Download,由于项目紧,就直接贴上别人用的例子:

    /* 打印指定的文件 */public static void printPDF(String FilePath) throws PrintException, FileNotFoundException {PDDocument document = null;try {File file=new File(FilePath);document = PDDocument.load(file);PrinterJob printJob = PrinterJob.getPrinterJob();printJob.setJobName("快递面单打印");PrintService printService = PrintServiceLookup.lookupDefaultPrintService();if (printService != null) {printJob.setPrintService(printService);} else {System.out.print("打印失败,未找到默认打印机,请检查。");return;}// }//设置纸张及缩放PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.SCALE_TO_FIT);//设置多页打印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 | IOException e) {e.printStackTrace();}}public static Paper getPaper() {Paper paper = new Paper();// 默认为A4纸张,对应像素宽和高分别为 595, 842int width = 595;int height = 842;// 设置边距,单位是像素,10mm边距,对应 28pxint marginLeft = 5;int marginRight = 0;int marginTop = 5;int marginBottom = 0;paper.setSize(width, height);// 下面一行代码,解决了打印内容为空的问题paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));return paper;}

Maven项目可以直接加上PDFbox的依赖,普通项目可以去Apache官网把包下载下来。

Java调用打印机读写文件相关推荐

  1. JAVA 调用打印机输出PDF文件

    想利用java程序打印一些文件.做以下测试: 一.环境 要调用打印机输出文件,首先本地得有一个能正常使用的打印机.我电脑安装的是虚拟打印机. 二.java代码 一).打印输出的实体类 import j ...

  2. java 调用打印机 api_java 调用打印机API无法打印,但是直接打印可以,请问有人遇到过这样的问题吗?...

    java调用打印机的代码如下:publicstaticvoidmain(String[]args){PrintRequestAttributeSetpras=newHashPrintRequestAt ...

  3. java 制作 winrar,windows 上java调用winrar压缩文件为rar 格式

    windows 下java调用winrar压缩文件为rar 格式 windows  下java调用winrar压缩文件为rar 格式 import java.io.BufferedReader; im ...

  4. C# 调用打印机打印文件

    C# 调用打印机打印文件,通常情况下,例如Word.Excel.PDF等可以使用一些对应的组件进行打印,另一个通用的方式是直接启用一个打印的进程进行打印.示例代码如下: using System.Di ...

  5. java调用CMD完成文件复制

    java调用CMD完成文件复制 最近突然又想起文件的复制操作,感觉用流的方式操作还是不免有些费劲,所以试着在程序中结合cmd的方式处理,非常之方便,效率很快,大家不妨试试哦. package util ...

  6. Java调用打印机打印(远程、本地皆可用)

    Java调用打印机打印(远程.本地皆可用) 背景 准备 MAVEN环境 步骤 获取PrinterJob 设置PrinterJob纸张样式 打印PDF 背景 开发个Java项目需要远程调用共享打印机打印 ...

  7. windows 下java调用winrar压缩文件为rar 格式

    windows  下java调用winrar压缩文件为rar 格式 import java.io.BufferedReader; import java.io.IOException; import ...

  8. JAVA调用打印机,打印PDF文件

    1. 导入maven依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdf ...

  9. java使用nio读写文件

    IO原理 最近在研究 JAVA NIO 的相关知识,学习NIO,就不能提到IO的原理和事项,必经NIO是基于IO进化而来 IO涉及到的底层的概念大致如下: 缓冲区操作.2) 内核空间与用户空间.3) ...

最新文章

  1. pch在c语言中占内存字节数,2018年9月计算机二级C语言考试章节习题及答案(6).docx...
  2. 她,诗人拜伦之女,英国数学家,历史上第一位程序员
  3. DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp...
  4. java.io.IOException No FileSystem for scheme hdfs
  5. nodejs 框架 中文express 4.xxx中文API手册
  6. 网络爬虫--22.【CrawlSpider实战】实现微信小程序社区爬虫
  7. TypeError: ufunc ‘multiply‘ did not contain a loop with signature matching types dtype(‘S32‘) dtype(
  8. 关于Block的个人总结
  9. rmd文件怎么转换html文件,如何将Rmd文件的html输出向左对齐
  10. sas+eg连接mysql_SAS EG 连接 SQL Server 2017数据库
  11. VC++中实现报警声音
  12. 普源DG5000系列函数/任意波形发生器功能解析
  13. 光影精灵usb安装linux,惠普光影精灵5笔记本怎么装win10系统(uefi+gpt)
  14. python爬取“堆糖网”小姐姐 图片
  15. 微信开启全民付费模式,我们有个共同好友叫“Feed广告”
  16. Verilog语言菜鸟教程知识关键点记录
  17. 电脑蓝屏原因与手把手处理指南(关于0x00000124分析)
  18. C#腾讯地图Web端定位地址搜索及手机导航
  19. 家园系统服务器,梦幻西游手游家园系统外观全面升级
  20. 数据分析案例--2012美国总统竞选赞助数据分析

热门文章

  1. 《百面机器学习》读书笔记(十一)-强化学习
  2. jsp蔬菜水果的网上购物系统
  3. 机器学习原来如此简单,万能模板直接用
  4. FindFirstFile() 和findnextfile()
  5. Windows下python环境安装scrapy
  6. Efficient Range and kNN Twin SubsequenceSearch in Time Series(TKDE2022)
  7. 数据开发 的 代码规范 以及 代码评审脚本
  8. MySQL-基础入门从0到1
  9. 苹果邮件怎么添加qq邮箱_分别在win10自带邮件和iOS上添加QQ邮箱
  10. Mysql 随机生成整数