生成二维码与 printJS 打印

最终效果:

1.生成二维码:

2.调用打印:

需求描述:

1.复选框选中数据,根据后端返回数据,生成二维码

2.调用本地打印,打印二维码。

解决代码:

生成二维码

1.html代码:

html 复制代码
    <div v-for="(item, index) in dataVueQr" :key="index" class="VueQr_details">
        <img :src="'data:image/png;base64,' + item.QRcode" alt="" class="VueQr_img" style="width: 245px; height: 245px">
    </div>

2.js代码

javascript 复制代码
for (let i = 0; i < this.dataVueQr.length; i++) {
    let blob = new Blob([this.dataVueQr[i].QRcode], { type: 'image/jpg' }) // 返回的文件流数据
    this.dataVueQr[i].textUrl = window.URL.createObjectURL(blob) // 将他转化为路径
}

dataVueQr为后端返回数据,如下图所示。

打印二维码

1.js代码

javascript 复制代码
// 打印二维码
printPDF() {
    const style = '@page {margin:5mm 20mm};'
    printJS('printJS_VueQr', 'html')
    printJS({
        //  设置打印区域id
        printable: 'printJS_VueQr',
        type: 'html',
        scanStyles: true,
        targetStyle: ['display', 'align-items', 'line-height', 'font-size'],
        style: `
            @page {
                margin:5mm 10mm
            }
            .VueQr_img {
                width: ${this.mmToPxData}px; 
                height: ${this.mmToPxData}px; 
                margin-bottom: 20px;
            }
        `,
        font_size: '20pt'
    })
},

// 毫米转像素点
mmToPx(value) {
    var inch = value / 25.4;
    var c_value = inch * this.getDPI()[0];
    return Math.floor(c_value);
},
// 取屏幕信息用作当前屏幕计算基本参数
getDPI() {
    let arrDPI = new Array;
    if (window.screen.deviceXDPI) {
        arrDPI[0] = window.screen.deviceXDPI;
        arrDPI[1] = window.screen.deviceYDPI;
    } else {
        let tmpNode = document.createElement("DIV");
        tmpNode.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden";
        document.body.appendChild(tmpNode);
        arrDPI[0] = parseInt(tmpNode.offsetWidth);
        arrDPI[1] = parseInt(tmpNode.offsetHeight);
        tmpNode.parentNode.removeChild(tmpNode);
    }
    return arrDPI;
}

1.printJS_VueQr:打印div的id。

2.this.mmToPxData = this.mmToPx(39) , 可根据需求更改参数

3.printJS:import printJS from 'print-js'

总结

生成二维码主要是后端返回文件流生成,边距和清晰度都是后端设置的,但是前端也可以动态计算。

相关推荐
行业探路者3 天前
音频二维码让音频分享变得更简单快捷
学习·音视频·语音识别·二维码·设备巡检
u13013010 天前
深入解析二维码技术与前端生成方案
前端·二维码
行业探路者11 天前
健康宣教二维码是什么?主要有哪些创新优势?
人工智能·学习·音视频·二维码·产品介绍
行业探路者11 天前
提升产品宣传效果的二维码应用新趋势
大数据·人工智能·学习·二维码·产品介绍
response_L12 天前
PageOffice动态给word插入二维码(或条形码)图片
vue·word·开发工具·二维码·在线编辑
行业探路者13 天前
如何通过音频二维码生成提升信息分享效率?
大数据·人工智能·学习·二维码·产品介绍
行业探路者18 天前
二维码标签是什么?主要有线上生成二维码和文件生成二维码功能吗?
学习·音视频·语音识别·二维码·设备巡检
行业探路者20 天前
如何利用二维码提升产品画册的制作与传播?
大数据·人工智能·安全·二维码·设备巡检
行业探路者1 个月前
提升旅游行程管理效率的二维码文件生成方案
大数据·人工智能·学习·二维码·产品介绍