前言
Java Print Service是Java自带的打印框架,所在的包javax.print.PrintService。这种方案局限性比较大,只能打印PNG文件(廉价打印机不支持打印PDF)
代码实现
Apache PDFBox打印实现也是封装了Java Service Print框架的打印功能,支持性比较好,使用起来也较为方便。
Maven依赖
1 2 3 4 5
| <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.8</version> </dependency>
|
Java代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| String printName = "Win32 Printer : Microsoft Print to PDF"; String pdfPath = "D:\test.pdf"; File file = new File(pdfPath);
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);
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
PageFormat pageFormat = new PageFormat(); pageFormat.setPaper(paper);
Book book = new Book();
book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1); job.setPageable(book);
job.print();
|
总结
此篇文章早年写于CSDN。后来有试过chrome headless模式打印PDF效果也不错。