1.Java Print Service
Java Print Service是Java自带的打印框架,所在的包javax.print.PrintService;。
这种方案局限性比较大,只能打印PNG文件(廉价打印机不支持打印PDF)
2.Apache PDFBox
它的打印实现也是封装了Java Service Print框架的打印功能,支持性比较好
引入maven
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.8</version></dependency>
代码
// 使用打印机的名称String printName = "Win32 Printer : Microsoft Print to PDF";String pdfPath = "D:\test.pdf";File file = new File(pdfPath);// 读取pdf文件PDDocument document = PDDocument.load(file);// 创建打印任务PrinterJob job = PrinterJob.getPrinterJob();// 遍历所有打印机的名称for (PrintService ps : PrinterJob.lookupPrintServices()) {String psName = ps.toString();// 选用指定打印机if (psName.equals(printerName)) {isChoose = true;job.setPrintService(ps);break;}}job.setPageable(new PDFPageable(document));Paper paper = new Paper();// 设置打印纸张大小paper.setSize(598,842); // 1/72 inch// 设置打印位置 坐标paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins// custom page formatPageFormat pageFormat = new PageFormat();pageFormat.setPaper(paper);// override the page formatBook book = new Book();// append all pages 设置一些属性 是否缩放 打印张数等book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1);job.setPageable(book);// 开始打印job.print();