最近,由于项目需求,需要增加系统调用打印机打印PDF文档功能。以前在Asp.Net项目中做过套打,但是现在的需求直接文档打印,下面是实现代码调用打印机的两种方法。
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 (psNam