javax.print包是API的主包,其中包含的類和接口能夠讓你:1)發現打印服務(Print Services)2)指定打印數據的格式 3)從一個打印服務創建打印工作(print jobs) 4)向一個打印設備或者數據流發送打印數據
通俗點就是:1)列出打印機列表 2)整合要打印的頁面 3)獲取打印服務對象並設置要干什么 4)打印對象要干什么通過打印機去干
//打印機列表 PrintService[] printService = PrintServiceLookup.lookupPrintServices(null, null); PrintService ps = null; for (int i = 0; i < printService.length; i++) { String pn = printService[i].getName(); System.out.println(pn); }
float dpm = 72 / 25.4f; //理解成書 Book book = new Book(); //設置成豎打 PageFormat pf = new PageFormat(); pf.setOrientation(PageFormat.PORTRAIT); //理解成紙,大小嚴格按實際 Paper pp = new Paper(); pp.setSize(dpm * 40, dpm * 30);// 紙張大小 pp.setImageableArea(0, 0, dpm * 40, dpm * 30);// 打印區域 pf.setPaper(pp); // 把 PageFormat 和 Printable 添加到書中,組成一個頁面 TickPage page = new TickPage();//TickPage是重寫Printable的類,其實現打印內容的詳細 book.append(page, pf); // 獲取打印服務對象 PrinterJob job = PrinterJob.getPrinterJob(); // 設置打印類 job.setPageable(book); //告訴打印機 job.setPrintService(ps); //打印 job.print();
public class TickPage implements Printable { public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException { //NO_SUCH_PAGE告訴打印機沒東西打 if(pageIndex!=0)return NO_SUCH_PAGE; //要怎么打印東西都在這里 g.setFont(new Font("",0,7)); g.drawString("hello zhylioooo!",10,20); return PAGE_EXISTS; } }