话不多说,直接上代码。
首先jar包依赖:
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.24</version> </dependency>
用于从给定的FileInputStream
中加载PDF文档,并通过打印对话框进行打印。若本地没有安装打印机服务可能会报错的哟(一般电脑都自带)。
package com.example.printForThis; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.printing.PDFPageable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.FileInputStream; import java.io.IOException; import java.util.Date; /** * @author 小蔡同学 * @version 1.0 * @date 2024/7/18 0:00 */ public class print { public static void printWithDialog( FileInputStream inputStream){ PDDocument document = null; try { //打印字节流文件 document = PDDocument.load(inputStream); //打印本地文件 //document = PDDocument.load(new File(filePath)); PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintService(PrinterJob.lookupPrintServices()[0]); job.setPageable(new PDFPageable(document)); job.setJobName("测试打印API"); job.setCopies(1); if (job.printDialog()) { job.print(); } } catch (IOException e) { e.printStackTrace(); } catch (PrinterException e) { e.printStackTrace(); }finally { //关闭文档流 try { inputStream.close(); if (document != null) document.close(); } catch (IOException e) { e.printStackTrace(); } } } }
关于以上方法的一些解释:
- 使用
PrinterJob.getPrinterJob()
获取一个打印任务实例。 - 使用
job.setPrintService(PrinterJob.lookupPrintServices()[0]);
设置默认的打印服务。这里只选择了第一个打印服务,但在实际应用中,你可能需要让用户选择第几个打印机。 - 使用
job.setPageable(new PDFPageable(document));
设置要打印的页面内容。 - 使用
job.setJobName("测试打印API"+new Date());
设置打印任务的名称。 - 使用
job.setCopies(1);
设置打印份数为1。