zoukankan      html  css  js  c++  java
  • springboot实现控制层返回二维码,扫描后打开PDF文件

    公司要求是弹出一个二维码,扫描二维码后进入对应的PDF文件,

     

    一. google ZXing 简介

      Java 操作二维码的开源项目很多,如 SwetakeQRCode、BarCode4j、Zxing 等等

      本文将介绍简单易用的 google 公司的 zxing,zxing 使用方便,可以操作条形码或者二维码等,不仅有 java 版本,还有 Android 版。

    二.Maven引入

     1 <!-- 二维码 https://mvnrepository.com/artifact/com.google.zxing/core -->
     2         <dependency>
     3             <groupId>com.google.zxing</groupId>
     4             <artifactId>core</artifactId>
     5             <version>3.3.0</version>
     6         </dependency>
     7         <!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
     8         <dependency>
     9             <groupId>com.google.zxing</groupId>
    10             <artifactId>javase</artifactId>
    11             <version>3.3.0</version>
    12         </dependency>

    三.代码实列

         

     1  /**
     2      *      生成二维码方法  手机扫描后可查看网格管理办法内容PDF
     3      *
     4      * @param resp response对象
     5      * @throws Exception 抛出异常
     6      */
     7     @RequestMapping("/mmqrcode")
     8     public void getQrcode(HttpServletResponse resp) throws Exception {
     9         ServletOutputStream stream = null;
    10            try {
    11                stream = resp.getOutputStream();
    12                Map<EncodeHintType, Object> hints = new HashMap<>();
    13                //编码
    14                hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    15                //边框距
    16                hints.put(EncodeHintType.MARGIN, 0);
    17                String str="http://139.159.243.179:22816/static/files/%AC%E5%86%E6%9E%90%E5%91%A8%E6%8A%A5.pdf";
    18                QRCodeWriter writer = new QRCodeWriter();
    19                BitMatrix bm = writer.encode(str, BarcodeFormat.QR_CODE, 300, 300, hints);
    20                MatrixToImageWriter.writeToStream(bm, "png", stream);
    21            } catch (WriterException e) {
    22                e.getStackTrace();
    23            } finally {
    24                if (stream != null) {
    25                    stream.flush();
    26                    stream.close();
    27                }
    28            }
    29        }

      

    四.访问路径看效果如何

  • 相关阅读:
    sql 行转列
    wm_concat函数 用法
    PL/SQL如何调试Oracle存储过程
    Oracle&SQLServer中实现跨库查询
    Oracle 中 decode 函数用法
    Oracle中给用户赋予debug权限
    Oracle中的NVL函数
    oracle 触发器 pragma autonomous_transaction
    ORACLE中%TYPE和%ROWTYPE的使用
    A complete example using RAISE_APPLICATION_ERROR : raise_application_error
  • 原文地址:https://www.cnblogs.com/KdeS/p/11282531.html
Copyright © 2011-2022 走看看