java实现打印机打印的区别

构建打印任务方式不同:

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();//打印一组页面。

posted @ 2018-04-11 11:54  奋斗的少年(逝去2019)  阅读(2295)  评论(0)    收藏  举报