SpringBoot系列---【java实现调用打印机】


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();
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM