首页 > 其他分享 >前端实现生成条形码并下载

前端实现生成条形码并下载

时间:2024-06-21 09:58:45浏览次数:16  
标签:node 条形码 canvas 前端 生成 let image 下载

一、生成条形码

下载JsBarcode.js

在对应项目的终端中,输入如下代码,安装:

npm install jsbarcode --save

在二维码生成的页面中引入:

import JsBarcode from "jsbarcode";

使用示例:

<!--    条形码生成的页面-->

<template>
  <div>
    <svg id="barcode"></svg>
  </div>
  <el-button @click="downCode">下载</el-button>
</template>

<script setup>
import {ref, onMounted} from "vue";
import JsBarcode from "jsbarcode";
import {covertSVG2Image} from "@/utils/downloadSVG.js";
import {dayjs} from "element-plus";

const nowDate = ref(dayjs().unix())  //生成时间戳用于下载时的名称显示

onMounted(() => {
  JsBarcode("#barcode", "Hi world!", {
    margin: 10,
    background: "#dddddd"
  });
})

const downCode = () => {
  // 获取生成的 SVG 条形码元素
  let node = document.getElementById('barcode');
  if (node) {
    // 调用 covertSVG2Image 函数时,确保传入正确的参数
    covertSVG2Image(node, `二维码-${nowDate.value}`, node.clientWidth, node.clientHeight);
  }
}

</script>

<style scoped>

</style>

二、下载条形码

封装的下载条形码方法:

/**
 * 将svg导出成图片
 * @param node svg节点 => document.getElementById('barcode');
 * @param name 生成的图片名称
 * @param width 生成的图片宽度
 * @param height 生成的图片高度
 * @param type 生成的图片类型
 */
export const covertSVG2Image = (svgNode, name, width, height, type = 'png') => {
    let serializer = new XMLSerializer();
    let source = '<?xml version="1.0" standalone="no"?>\r\n' + serializer.serializeToString(svgNode);
    let image = new Image();
    image.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(source);

    let canvas = document.createElement('canvas');
    canvas.width = width;
    canvas.height = height;
    let context = canvas.getContext('2d');

    image.onload = function () {
        // 确保绘制图像时,图像的宽高与 Canvas 的宽高一致
        context.drawImage(image, 0, 0, width, height);
        let a = document.createElement('a');
        a.download = `${name}.${type}`;
        // 确保 toDataURL 的类型是小写的
        a.href = canvas.toDataURL(`image/${type}`);
        a.click();
    };
}

标签:node,条形码,canvas,前端,生成,let,image,下载
From: https://www.cnblogs.com/bokemoqi/p/18259971

相关文章

  • C#设计:实现文件的多线程下载
    一、程序设计要求能够在下载过程中显示进度信息(如总大小、已下载大小、进度、下载速度、剩余大小、剩余时间、状态、下载的网址等)。支持从指定的URL下载文件。支持多线程并发下载文件。提供友好的用户界面(UI)来下载。具有良好的可扩展性,能够方便地添加新功能或修改现有功能。代......
  • BaseHref 以及前端路由的问题
    BaseHref以及前端路由的问题BaseHref是什么?MDN,说的直白一点就是,这个站点里面所有的访问主站的资源文件,都会在路由前面加上这个basehref,包括*js,scss,image,ajax,......**。如果一个DOM里面有多个这样的base,只有第一个会起作用。BaseHref在Angular工程的编译中有......
  • window中git的下载安装(手把手教学)
    1、下载git官网下载:Git-Downloads(git-scm.com)点进去后,进入如下界面:(根据自己的系统选择下载)哈哈哈哈哈哈哈哈哈哈哈,官网下载很慢以下提供一个镜像,供大家使用:CNPMBinariesMirror(npmmirror.com)自己选择对应的版本下载下载好了之后双击运行安装包2、安装接......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 三种方法教你下载 Windows 10 和 Windows 11 原生镜像
    原文地址:https://itxiaozhang.com/three-methods-to-download-windows-10-and-windows-11-iso/本文配合视频食用效果最佳,视频教程在文章末尾。方法一:通过微软官网下载下载Windows11镜像打开微软官网下载页面访问微软官网的Windows11下载页面。选择下载选项......
  • 网页实现前端轮盘抽奖
    参考链接Luckydraw/index.htmlatmain·alltrue6/Luckydraw(github.com)实现结果如下 代码如下:创建了一个旋转抽奖盘,用户点击“开始抽奖”按钮后,抽奖盘会旋转并最终停止在一个随机的奖项上,并显示抽中的奖品。引入jQuery库:使用CDN引入jQuery库,方便后续进行DOM操作......
  • EarMaster Pro\软件下载及安装教程
    ​简介来自丹麦皇家音乐学院的多媒体音乐教育软件EarMasterPro以问答的交互形式,寓教于乐的视听方法,给专业和非专业音乐人士以极大的音乐学习帮助。无论你是刚学音乐的儿童,还是一个音乐高手,都可以使用这个软件来增强你的听音能力。因为这个软件可以灵活的设置难度了级别。E......
  • PDFFactory&FinePrint软件安装包下载+详细安装教程
    简介:pdfFactoryPro(虚拟打印机)是一个无须Acrobat创建AdobePDF文件的打印机驱动程序。pdffactorypro虚拟打印机提供了比其他程序提供得更简单、更有效率和更少的花费的创建PDF文件的解决方案。用于需要安全的PDF(法律文档、公司信息等)和其他高级功能的用户。安......