Java调用打印机读写文件
最近跟着项目组在做项目,分到了打印机这个任务,顺便记录一下。
首先本地最好安装一下打印机的驱动,然后连上打印机开始测试!
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调用打印机读写文件相关推荐
- JAVA 调用打印机输出PDF文件
想利用java程序打印一些文件.做以下测试: 一.环境 要调用打印机输出文件,首先本地得有一个能正常使用的打印机.我电脑安装的是虚拟打印机. 二.java代码 一).打印输出的实体类 import j ...
- java 调用打印机 api_java 调用打印机API无法打印,但是直接打印可以,请问有人遇到过这样的问题吗?...
java调用打印机的代码如下:publicstaticvoidmain(String[]args){PrintRequestAttributeSetpras=newHashPrintRequestAt ...
- java 制作 winrar,windows 上java调用winrar压缩文件为rar 格式
windows 下java调用winrar压缩文件为rar 格式 windows 下java调用winrar压缩文件为rar 格式 import java.io.BufferedReader; im ...
- C# 调用打印机打印文件
C# 调用打印机打印文件,通常情况下,例如Word.Excel.PDF等可以使用一些对应的组件进行打印,另一个通用的方式是直接启用一个打印的进程进行打印.示例代码如下: using System.Di ...
- java调用CMD完成文件复制
java调用CMD完成文件复制 最近突然又想起文件的复制操作,感觉用流的方式操作还是不免有些费劲,所以试着在程序中结合cmd的方式处理,非常之方便,效率很快,大家不妨试试哦. package util ...
- Java调用打印机打印(远程、本地皆可用)
Java调用打印机打印(远程.本地皆可用) 背景 准备 MAVEN环境 步骤 获取PrinterJob 设置PrinterJob纸张样式 打印PDF 背景 开发个Java项目需要远程调用共享打印机打印 ...
- windows 下java调用winrar压缩文件为rar 格式
windows 下java调用winrar压缩文件为rar 格式 import java.io.BufferedReader; import java.io.IOException; import ...
- JAVA调用打印机,打印PDF文件
1. 导入maven依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdf ...
- java使用nio读写文件
IO原理 最近在研究 JAVA NIO 的相关知识,学习NIO,就不能提到IO的原理和事项,必经NIO是基于IO进化而来 IO涉及到的底层的概念大致如下: 缓冲区操作.2) 内核空间与用户空间.3) ...
最新文章
- pch在c语言中占内存字节数,2018年9月计算机二级C语言考试章节习题及答案(6).docx...
- 她,诗人拜伦之女,英国数学家,历史上第一位程序员
- DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp...
- java.io.IOException No FileSystem for scheme hdfs
- nodejs 框架 中文express 4.xxx中文API手册
- 网络爬虫--22.【CrawlSpider实战】实现微信小程序社区爬虫
- TypeError: ufunc ‘multiply‘ did not contain a loop with signature matching types dtype(‘S32‘) dtype(
- 关于Block的个人总结
- rmd文件怎么转换html文件,如何将Rmd文件的html输出向左对齐
- sas+eg连接mysql_SAS EG 连接 SQL Server 2017数据库
- VC++中实现报警声音
- 普源DG5000系列函数/任意波形发生器功能解析
- 光影精灵usb安装linux,惠普光影精灵5笔记本怎么装win10系统(uefi+gpt)
- python爬取“堆糖网”小姐姐 图片
- 微信开启全民付费模式,我们有个共同好友叫“Feed广告”
- Verilog语言菜鸟教程知识关键点记录
- 电脑蓝屏原因与手把手处理指南(关于0x00000124分析)
- C#腾讯地图Web端定位地址搜索及手机导航
- 家园系统服务器,梦幻西游手游家园系统外观全面升级
- 数据分析案例--2012美国总统竞选赞助数据分析