1.准備工作
要調用的電腦已經連上打印機,並且可以正常打印。
2.引入pom依賴
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.8</version>
</dependency>
3.Demo示例
@ApiOperation(value = "打印測試") @PostMapping("/print1") public void print(String printName,@RequestPart("multipartFile") MultipartFile multipartFile) throws IOException, PrinterException { // // 使用打印機的名稱 // String printName = "\\\\172.17.1.127\\Canon-print"; /* 保存上傳的文件到"e:\\" */ // String pdfPath = "e:\\"; // File file = new File(pdfPath+headerImg.getOriginalFilename()); // InputStream inputStream = headerImg.getInputStream(); // FileOutputStream out = new FileOutputStream(file); // IoUtil.copy(headerImg.getInputStream(),out); // out.write(headerImg.getBytes()); // out.close(); // 讀取pdf文件 PDDocument document = PDDocument.load(multipartFile.getInputStream()); // 創建打印任務 PrinterJob job = PrinterJob.getPrinterJob(); job.setJobName(multipartFile.getOriginalFilename()); // 遍歷所有打印機的名稱 for (PrintService ps : PrinterJob.lookupPrintServices()) { String psName = ps.toString(); // 選用指定打印機 if (psName.equals(printName)) { 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 format PageFormat pageFormat = new PageFormat(); pageFormat.setPaper(paper); // override the page format Book book = new Book(); // append all pages 設置一些屬性 是否縮放 打印張數等 book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1); job.setPageable(book); // 開始打印 job.print(); }
