2019-01-25 13:36:33 1493瀏覽
今天扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于Java實(shí)現(xiàn)PDF打印的解決方案,下面我們一起來(lái)看一下吧。
//1.得到一個(gè)文件的輸入流 FileInputStream fiStream; try { psStream = new FileInputStream("./sample.PDF"); } catch (FileNotFoundException ffne) { } if (psStream == null) { return; } //這是要打印文件的格式,如果是PDF文檔要設(shè)為自動(dòng)識(shí)別 DocFlavor fileFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; //2.得到要打印的文檔類DOC Doc myDoc = new SimpleDoc(fiStream, fileFormat, null); //3.生成一個(gè)打印屬性設(shè)置對(duì)象 PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(new Copies(5));//Copies-打印份數(shù)5份 aset.add(MediaSize.A4);//A4紙張 aset.add(Sides.DUPLEX);//雙面打印 //4.關(guān)鍵一步,得到當(dāng)前機(jī)器上所有已經(jīng)安裝的打印機(jī) //傳入的參數(shù)是文檔格式跟打印屬性,只有支持這個(gè)格式與屬性的打印機(jī)才會(huì)被找到 PrintService[] services = PrintServiceLookup.lookupPrintServices(fileFormat, aset); if (services.length > 0) { //5.用打印服務(wù)生成一個(gè)文檔打印任務(wù),這里用的是第一個(gè)服務(wù) //也可以進(jìn)行篩選,services[i].getName()可以得到打印機(jī)名稱,可用名稱進(jìn)行比較得到自己想要的打印機(jī) DocPrintJob job = services[0].createPrintJob(); try { //6.最后一步,執(zhí)行打印文檔任務(wù),傳入的參數(shù)是Doc文檔類,與屬性(5份,雙面,A4) job.print(myDoc, aset);//成功后電腦會(huì)提示已有文檔添加到打印隊(duì)列 } catch (PrintException pe) {} }
PrintPDF.main(new String[]{ "-silentPrint",//靜默打印 "-password","abcde",//pdf打開密碼 "-printerName","hp Laserjet 1020" ,//指定打印機(jī)名 "-orientation","auto|landscape|portrait",//打印方向,三種可選 "pdfFilePath"http://打印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);
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>