Vue2/Vue3 实现条形码生成(以及打印条形码踩坑)

前言:我写这篇博客是因为在我司业务打印中用到了条形码:而且坑还不少如果是单独展示就很简单

怎么舒服怎么来 在打印踩的坑我放到文章第三步和结束了

第一步:安装jsbarcode库 这个库vue2和vue3都兼容

npm install jsbarcode --save

第二步:在需要的页面进行引入

import JsBarcode from "jsbarcode";

第三步:创建条形码生成容器(有三种方法)

<!-- 第一种svg格式 优点清晰度高 缺点在面积小的纸张兼容性不好不能约束尺寸 不适用打印功能(天坑 踩过) -->
<svg id="svgcode"></svg>

<!-- 第二种img格式 优点适用打印页面能约束宽高 缺点清晰度低点 但是能扫出来  -->
<img id="imgcode" />

<!-- 第三种画布格式   不给予评价 我司目前没业务场景用过 -->  
<canvas id="canvascode"></canvas>  

第四步:有批量生成和单独生成功能 批量生成存放的容器必须要是唯一的

   //批量打印的渲染DOM结构(不需要可以直接跳过)
<div
   class="prinPage"
   v-for="(item, index) in prinList"
   :key="index">
  <img :id="'barcode-' + index"/>
</div>
let prinList = ref([]);
let getBarcode = () => {
  let options = {
    text: "编码内容",//等同于JsBarcode第二个参数 
    fontSize: 10,//条形码下方文字的大小
    height: 60,//条形码的高度
    width: 2.5,//条形码 条的宽度不是总体的宽度 (宽度过小 扫描枪会扫描不出来 天坑我踩过)
    displayValue: false,//隐藏条形码下方文本
  };
  // JsBarcode第一个参数是容器ID名 第二个参数是条形码扫描后的内容(默认条形码的内容会在条形码下方展示) 第三个参数是方法的配置项(具体配置查看官网)
  JsBarcode("#barcode", '5', options);
  //这个函数是实现批量生成的功能(没用可以删除)
  // prinList.value.forEach((item, index) => {
  //   options.text = item.order_number;
  //   options.order_number = item.order_number;
  //   JsBarcode("#barcode-" + index, '5', options);  挂载条形码方法 注意批量生成 容器必须是唯一的 且同时都要存在 思路容器加上循环的index即可
  // });
};
onMounted(() => {
  nextTick(() => {
    getBarcode(); //需要再真实DOM渲染完成后执行否则就会报错
  });
});

踩坑说明:与正常使用无关 可以跳过无碍

注意:在打印中使用条形码就不一样了 我们需要注意条形码容器的类型 可以回到第三步阅读

注意:条形码的内容会影响条形码的长度 内容文本越长 条形码宽度越宽

svg格式无法进行宽度约束 我也不知道为什么 一旦文本内容过长条形码就会溢出屏幕(踩坑)

解决方案:采用img格式放弃svg格式 约束img格式的宽高

我司用到的扫码枪是PDA 可以在扫描出电脑上的但是无法扫码打印纸上的(踩坑)

解决方案:options 的width配置项 不同打扫码枪能识别的条形码的条width宽度不一样

手机能识别出条形码但是PDA扫码枪识别不了(踩坑)

解决方案 在同样的条形码条宽度手机的条形码识别宽度要小于扫描枪的识别宽度 可以配置options 的width配置项来解决

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue动态生成条码标签打印模板可视化可以通过以下步骤实现: 1. 首先,需要使用Vue框架搭建一个项目,可以使用Vue CLI来创建一个新的项目。 2. 在Vue项目中,可以使用第三方组件库来实现可视化的界面设计,例如Element UI或Vuetify。通过这些组件库,可以方便地创建表格、表单和布局等元素。 3. 在Vue组件中,可以使用JavaScript库来生成条码标签。例如,可以使用JsBarcode库来生成条码图像,该库可以根据输入的数据生成各种类型的条码,如Code 39、Code 128等。将生成的条码图像添加到Vue组件中,并根据需要进行样式调整。 4. 在Vue组件中,可以通过表单输入或者从后端获取数据来生成条码标签。用户可以在可视化界面中输入条码相关信息,然后点击生成按钮来生成条码标签。可以使用Vue的数据绑定功能,将用户输入的数据与条码生成的相关参数进行关联,确保生成的条码标签与用户输入的数据一致。 5. 在Vue组件中,可以实现打印功能。可以使用浏览器提供的打印功能,通过JavaScript代码调用浏览器的打印API来实现打印功能。在进行打印前,可以设置打印样式,并将需要打印的内容添加到打印队列中。 6. 最后,在可视化界面中,可以通过添加按钮或菜单来触发打印功能。用户可以选择需要打印的条码标签,然后点击打印按钮来打印条码标签。 通过以上步骤,可以实现Vue动态生成条码标签打印模板可视化。用户可以方便地在可视化界面中输入相关信息,生成条码标签,并通过打印功能将生成的条码标签打印出来。这种可视化的方式可以提高工作效率,减少人工操作的繁琐性。 ### 回答2: Vue 是一种用于构建交互式用户界面的 JavaScript 框架。它提供了一种简洁的方式来创建动态生成条码标签并打印模板的可视化视图。 首先,我们可以使用 Vue 组件来创建一个条码标签模板。该模板可以包含动态生成条码的逻辑,以及需要打印的标签样式。 为了动态生成条码,我们可以使用第三方库,如 jsbarcode。这个库提供了一个简单的 API 来生成各种类型的条码,例如一维码和二维码。我们可以在 Vue 组件中调用该库的方法,传递所需的信息以生成条码。 在可视化方面,Vue 提供了一种响应式的数据绑定机制,以及一个强大的模板语法。我们可以使用这些特性来实现动态更新条码标签的可视化效果。例如,我们可以使用 v-for 指令来循环生成多个条码标签,根据数据源动态渲染每个标签的内容。 为了打印模板,我们可以使用第三方库,如 jsPDF。这个库提供了一个用于生成 PDF 文件的 API,我们可以在 Vue 组件中调用该库的方法,传递待打印内容和样式参数,生成 PDF 文件,然后将其下载或打印出来。 总的来说,Vue 可以帮助我们以一种可视化的方式动态生成条码标签,并提供了丰富的工具和库来处理打印模板的需求。该框架的简洁性和灵活性使得开发者可以轻松地实现这些功能,并为用户提供优雅而高效的界面体验。 ### 回答3: Vue是一种流行的JavaScript框架,它可以用于构建现代化的web应用程序。在Vue中动态生成条码标签的方法有多种,下面将介绍一种实现方式并实现可视化打印模板。 首先,我们可以使用一个开源的JavaScript库叫做JsBarcode来生成条码。我们可以通过在Vue组件中引入该库,并传入相应的数据来动态生成条码。 在Vue组件中,我们可以使用一个data属性来存储条码数据,并通过Vue的双向绑定来显示和更新该数据。 在模板中,我们可以使用一个<input>元素来输入条码数据,并使用一个<button>元素来触发生成条码的方法。当用户点击按钮时,我们可以获取<input>元素的值,并将其传递给JsBarcode库来生成条码。 在生成条码后,我们可以使用一个<img>元素来显示生成的条码图片。 此外,对于打印模板的可视化,我们可以使用Vue的计算属性和条件渲染来根据不同的所需显示和隐藏相应的组件或元素,例如显示条码和打印按钮。 当用户点击打印按钮时,我们可以使用window.print()方法来打印当前页面上的内容。 通过以上步骤,我们可以实现一个Vue动态生成条码标签的可视化打印模板。在该模板中,用户可以输入条码数据,点击按钮生成条码并将其显示出来,最后可以选择打印该标签。这样就实现了一个功能完成的Vue动态生成条码标签打印模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值