构建打印任务方式不同:
1:直接通过指定的打印机创建打印任务
DocPrintJob job= myPrintService.createPrintJob();
2:手动创建打印任务,再与指定的打印机进行关联
PrinterJob job=PrinterJob.getPrinterJob();
job.setPrintServie(myPrintService);
执行打印任务方式不同:
1、简单,将指定文件路径变为打印数据,直接进行打印
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
Doc myDoc = new SimpleDoc(new File(""), flavor, null);
job.print(myDoc,pras);
2、复杂,需要将指定的文件转换为PDF流到内存,并指定好打印纸张相关属性,最后进行打印
PDDocument myDoc=PDDocument.load(new File(""));
Paper paper = new Paper();
paper.setSize(252, 141); // 打印的页面的属性。
paper.setImageableArea(0, 5, paper.getWidth(), paper.getHeight()); // 页面上用来打印的区域。 左上角的 X 坐标,Y 坐标,区域宽度,高度
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);//为此 PageFormat 设置 Paper 对象
Book book = new Book();//Book 类提供文档的表示形式,该文档的页面可以使用不同的页面格式和页面 painter。此类使用 Pageable 接口与 PrinterJob 交互。
book.append(new PDFPrintable(document), pageFormat, document.getNumberOfPages());//将多个页面追加到此 Book 的尾部。
//查询 document,以获得页面数和 Pageable 实例 document 中保存的每个页面的 PageFormat 和 Printable。
job.setPageable(new PDFPageable(document, Orientation.PORTRAIT));
job.setPageable(book);
job.print();//打印一组页面。