java之打印机服务通俗做法

时间:2023-03-08 21:50:49

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