2019-01-25 13:36:33 502浏览
今天扣丁学堂Java培训老师给大家分享一篇关于Java实现PDF打印的解决方案,下面我们一起来看一下吧。
//1.得到一个文件的输入流 FileInputStream fiStream; try { psStream = new FileInputStream("./sample.PDF"); } catch (FileNotFoundException ffne) { } if (psStream == null) { return; } //这是要打印文件的格式,如果是PDF文档要设为自动识别 DocFlavor fileFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; //2.得到要打印的文档类DOC Doc myDoc = new SimpleDoc(fiStream, fileFormat, null); //3.生成一个打印属性设置对象 PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(new Copies(5));//Copies-打印份数5份 aset.add(MediaSize.A4);//A4纸张 aset.add(Sides.DUPLEX);//双面打印 //4.关键一步,得到当前机器上所有已经安装的打印机 //传入的参数是文档格式跟打印属性,只有支持这个格式与属性的打印机才会被找到 PrintService[] services = PrintServiceLookup.lookupPrintServices(fileFormat, aset); if (services.length > 0) { //5.用打印服务生成一个文档打印任务,这里用的是第一个服务 //也可以进行筛选,services[i].getName()可以得到打印机名称,可用名称进行比较得到自己想要的打印机 DocPrintJob job = services[0].createPrintJob(); try { //6.最后一步,执行打印文档任务,传入的参数是Doc文档类,与属性(5份,双面,A4) job.print(myDoc, aset);//成功后电脑会提示已有文档添加到打印队列 } catch (PrintException pe) {} }
PrintPDF.main(new String[]{ "-silentPrint",//静默打印 "-password","abcde",//pdf打开密码 "-printerName","hp Laserjet 1020" ,//指定打印机名 "-orientation","auto|landscape|portrait",//打印方向,三种可选 "pdfFilePath"//打印PDF文档的路径 });
Runtime.getRuntime().exec("cmd.exe /C start acrord32 /P /h " + filePath);
lpr -P printername -#2 /home/csdn.pdf
String [] cmd={"sh","-c","lpr -P printername -#2 /home/csdn.pdf"} Runtime.getRuntime().exec(cmd);
【关注微信公众号获取更多学习资料】