jquery-qrcode生成二维码用bootstrap打印中遇到的问题解决方法

来源:互联网 发布:baidu.com淘宝 编辑:程序博客网 时间:2024/06/05 07:52

jquery-qrcode是一个用js来生成二维码HTML元素的库,用法简单而且简单(Github 地址)。但是在打印的时候出现了一些问题。

二维码打印不显示

代码如下:

<div class="qrcode"></div>
$('.qrcode').empty();jQuery('.qrcode').qrcode({    text: "hello world",    width: 40,    height: 40});

这是jquery-qrcode最基本的用法——设置宽高及二维码内容。但是在打印时发现目标div区域是个空的,没有显示出来。检查HTML元素发现二维码其实是一个canvas元素。

<div class="qrcode">    <canvas width="40" height="40"></div>

虽然打印的时候吧canvas传递过去了,但是并没有显示canvas的内容。

解决方法

添加table属性

尝试添加了一个table属性,能够成功打印出二维码。但是添加了table有几个问题:

  • 传输给打印机的速度特别慢,要很久才能出现打印预览界面。
  • 二维码容易变形。
  • 在网页上有时候会不受控制的变得特别大。

这是为什么呢~还是得检查HTML元素啊!

<div class="qrcode">    <table>        <tbody>            <tr>                <td>                ...                </td>            </tr>           </tbody>    </table></div>

可以看到这个二维码是用HTML的table元素实现的。而这个table中有14个<tr>标签,而每个<tr>中有22个<td>标签。所以需要传输的HTML元素特别多,所以导致了传输速度超慢,实测打印65张带有一个table二维码的纸张需要传输8分钟。
PS:第一次看到这个table我被吓了一跳,莫名其妙怎么多出这么多东西。
而二维码变形的原因也是由于table的缘故,由于父级容器的挤压导致table不得不跟着变形,于是就会出现各种奇怪的形状。

解决方法

table坑太多,于是绕回来看canvas。突然想到能否将canvas转成img,结果成功了。

$('.qrcode').empty();jQuery('.qrcode').qrcode({    text: ZYH,    //render: "table",    width: 40,    height: 40});var canvas = $('.qrcode canvas')var img = canvas[0].toDataURL("image/png")$('.qrcode').html("<img src='" + img + "'>")
  • 用jquery-qrcode生成canvas
  • 将canvas转成图片
  • 在div中覆盖上img元素显示二维码图片

在使用了图片来显示二维码后,变形、不显示、传输慢的问题统统都解决了~希望能给同样遇上这个问题的童鞋一点帮助。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 想换飘窗窗户 大理石面怎么办 出差三个月绿萝怎么办 口红吊兰根烂怎么办 金鱼吊兰干枝怎么办 口红吊兰不开花怎么办 单位上班座位不好怎么办 简易办公室夏天闷热怎么办 开发商不让用公积金贷款怎么办 夏天脚底开裂缝怎么办 晚上脚丫子痒怎么办丫 栀子花长白粉虱怎么办 栀子花花骨朵变黄怎么办 栀子花苞焉了怎么办 水培栀子花焉了怎么办 三角梅叶子焉了怎么办 换瓣手术后出现漏洞怎么办 牙2瓣了怎么办 二件瓣反流已有20多年了怎么办 小阴唇静脉畸形怎么办 帝舵手表氧化怎么办? 脸干不易吸收怎么办 水粉画颜料裂了怎么办 吃粉条胃不舒服怎么办 胃营养吸收不好怎么办 猫咪老是挠人怎么办 去水上乐园头发怎么办 小腿摔伤后肿痛怎么办 对于说脏话学生怎么办 我该怎么办表情包 快乐暑假的板报怎么办 门前种了柏树怎么办 屁股两边长湿疹怎么办 小鸡发呆不吃食怎么办 脸上长小红豆怎么办 ps衣服褶皱太多怎么办 青菜根部长瘤怎么办 水培里面有虫怎么办? 多肉花头枯萎怎么办 鸢尾花叶子黄了怎么办 熊童子叶片脏了怎么办 家里一股狐臭味怎么办