JAVA 提供两种打印方式:
一种是使用默认连接的打印机
// 检查可用打印机。
PrinterJob printerJob = PrinterJob.getPrinterJob();
PrintService printService = printerJob.getPrintService();
//book是一个pageable的实现类
printerJob.setPageable(book);
printerJob.print();
优点:编码量少,只需要维护一下自己的数据(BOOK)对象以及一些页面格式等信息
缺点:如果有多个打印机时不能选择的情况
另一种打印方式:
//通过PrinterJob获取到已连接的所有打印机
PrintService[] printServices = PrinterJob.lookupPrintServices();
// 打印的job
DocPrintJob job = null;
//job要打印数据的格式
DocFlavor df = null;
//job要打印的数据
SimpleDoc sd = null;
if (printServices == null || printServices.length == 0)
{
JOptionPane.showMessageDialog(null, "目前没有可用的打印机!");
return null;
}
for (PrintService service : printServices)
{
/*根据业务或者其他条件判断使用那个打印机创建job对象
*/
if ("pdfFactory Pro".equals(service.getName()))
{
System.out.println(service.getName());
job = service.createPrintJob();
}
}
Book book = new Book();
TootooReceiptPrint tootooReceiptPrint = new TootooReceiptPrint(0,
0, orderJsonObject, itemsJsonObjects);
book.append(tootooReceiptPrint, pageFormat, 1);
//打印数据的格式的定义
df = new DocFlavor("application/x-java-jvm-local-objectref",
"java.awt.print.Pageable");
//创建打印对象
sd = new SimpleDoc(book, df, null);
/*打印,这里需要注意的是job的print方法只能调用一次
*即每个job对只能只能打印一页,当多页时,需要创建多个job
/
job.print(sd, null);
纯个人看法