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; } }