zoukankan      html  css  js  c++  java
  • 通过qrcodejs2和html2canvas把iframe中的内容生成带二维码的海报长图片

     import $ from 'jquery';
    import html2canvas from 'html2canvas';
    import QRCode from 'qrcodejs2';
    /**
     * 生成长图
     */
    export function createLonggraph() {
      const htmlcanvasContainer = $('#dropInnerIframe').contents().find('#magicalDragScene');
      const html = '<div id="qrCode" class="qrconde"  style=" 200px;height: 200px; display: none;margin: 30px auto;"></div>';
      htmlcanvasContainer.append(html);
      const qrcodeContaier = document.getElementById('dropInnerIframe').contentWindow.document.getElementById('qrCode');
      const iframeContainer = document.getElementById('dropInnerIframe');
      const html2canvasContainer = document.getElementById('dropInnerIframe').contentWindow.document.getElementById('magicalDragScene');
      // let iframeContainer = document.getElementById('dropInnerIframe').contentWindow.document.getElementById('iframeBody');
      qrcodeContaier.style.display = 'block';
      const code = new QRCode(qrcodeContaier, {
        text: columnUrl,
         200,
        height: 200,
        colorDark: '#333333', // 二维码颜色
        colorLight: '#ffffff', // 二维码背景色
        correctLevel: QRCode.CorrectLevel.L// 容错率,L/M/H
      });
      iframeContainer.contentWindow.scrollTo(0, 0);
      html2canvas(html2canvasContainer, {
        useCORS: true,
        scale: 1
      }).then(canvas => {
        // this.$refs.addImage.append(canvas);//在下面添加canvas节点
        const link = document.createElement('a');
        const time = new Date().getTime();
        const base64url = canvas.toDataURL();
        link.href = base64url;// 下载链接
        // console.log('图片链接===========', encodeURIComponent(base64url));
        link.setAttribute('download', time + '.png');
        link.style.display = 'none';// a标签隐藏
        document.body.appendChild(link);
        link.click();
        uploadLonggraph({ fileStr: base64url });
      }).catch(error => {
        console.log(error);
      });
      qrcodeContaier.innerHTML = '';
      qrcodeContaier.style.display = 'none';
      htmlcanvasContainer.remove('#qrCode');
    }

    1,获取iframe中的内容容器。

    2,在容器中添加二维码容器。

    3,生成二维码。

    4,生成带二维码的长图。

    5,清除dom元素中的二维码。

  • 相关阅读:
    【TYVJ1728】【洛谷P3369】—普通平衡树(Splay写法)
    【BZOJ2388】—旅行规划(分块+凸包)
    【BZOJ3674】—可持久化并查集加强版(可持久化并查集)
    【模板】树链剖分+换根
    【CQOI2007】【BZOJ1257】【洛谷P2261】余数求和(整除分块)
    Old Driver Tree(ODT 老驱动树)
    【CodeForces-896C】— Willem, Chtholly and Seniorious(ODT老驱动树)
    【BZOJ2238】—MST(树链剖分+最小生成树)
    13.PHP_ThinkPHP
    Win64 驱动内核编程-33.枚举与删除对象回调
  • 原文地址:https://www.cnblogs.com/lml2017/p/15194539.html
Copyright © 2011-2022 走看看