• 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();
        }
  • 相关阅读:
    剑指 Offer 31. 栈的压入、弹出序列
    剑指 Offer 33. 二叉搜索树的后序遍历序列
    剑指 Offer 36. 二叉搜索树与双向链表
    tarjan 强连通分量
    剑#指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 32 III. 从上到下打印二叉树 III
    Tarjan C++版
    剑指 Offer 35. 复杂链表的复制
    tarjan2
    Vue:解决“此图片来自微信公众平台 未经允许不可引用”问题的方法
  • 原文地址:https://www.cnblogs.com/hujunwei/p/16106830.html
Copyright © 2020-2023  润新知