【vue3】前端实现 生成条形码并调用打印机打印

2024-03-01 1049阅读

温馨提示:这篇文章已超过388天没有更新,请注意相关的内容是否还可用!

参考文章:前端实现 生成条形码并调用打印机打印

【vue3】前端实现 生成条形码并调用打印机打印
(图片来源网络,侵删)

开发技术栈vue3+vite+setup

实现功能,批量选择数据–>生成条形码—>调用打印机–>打印输出

一、生成条形码:

1.安装所需要插件

npm i jsbarcode

2. 引入

import JsBarcode from 'jsbarcode'

3. 使用

 // html 部分
 
// js部分
 
import{ref, onMounted} from 'vue'
import JsBarcode from 'jsbarcode'
 
const barcodeRef=ref(null)
const text = '123456789'
const options= {
    // format: 'EAN13', // 格式
    height: 50,
    // text: "覆盖显示的文本",
    fontSize: 16,
    // background: '#ccc',
     lineColor: 'black'
}
JsBarcode(barcodeRef.value, text , options)

具体相关条形码配置options,请参考jsbarcode - npm

二,调用打印机打印条形码

1.安装所需要插件

 npm i vue-print-nb

2. 引入

main.js文件

import print from 'vue3-print-nb'
 
const app = createApp(App)
app.use(print)
...
app.mount('#app')

3. 使用

 // html 部分
 
     这里就是你所要打印的内用
    打印
  
// js部分
 
import{ref, onMounted} from 'vue'
 
const printObj = reactive({
  id: 'printTest', // 绑定打印区域的id
  beforeOpenCallback(vue) {
    vue.printLoading = true
    console.log('打开之前')
  },
  openCallback(vue) {
    vue.printLoading = false
    console.log('执行了打印')
  },
  closeCallback(vue) {
    console.log('关闭了打印工具')
  }
})

具体相关条形码配置printObj,请参考vue-print-nb - npm

在打印预览的时候发现,条形码并不是一码一页,以及存在打印预览中会看到在纸张的上下页眉和页脚中有日期及其他的文字内用,该怎么去掉;

别着急!!!

 // 1.实现一码一页打印
 
     
        这里就是你所要打印的内用
 
         
        

打印 // 去掉页眉和页脚 通过媒体查询,css来解决 @media print { @page { size: auto; /* 重置页面大小,避免出现空白页 */ margin-top: 0; /* 取消页眉 */ margin-bottom: 0; /* 取消页脚 */ margin-left:0; margin-right:0; /* 取消默认的左右页边距 */ } }

三,完整代码实现批量打印条形码

  
    
      
        
        
        

打印 import JsBarcode from 'jsbarcode' import { ref, reactive, onMounted } from 'vue' const printObj = reactive({ id: 'printTest', // 绑定打印区域的id beforeOpenCallback(vue) { vue.printLoading = true console.log('打开之前') }, openCallback(vue) { vue.printLoading = false console.log('执行了打印') }, closeCallback(vue) { console.log('关闭了打印工具') } }) // 批量要打印的数据 const data = ref(['123456789', '987654321']) const options = { // format: 'EAN13', // 格式 height: 50, // text: "覆盖显示的文本", fontSize: 16, // background: '#ccc', lineColor: 'black' } const barcodeList = ref([]) onMounted(() => { data.value.forEach((item, index) => { JsBarcode(barcodeList.value[index], item, options) }) }) @media print { @page { size: auto; /* 重置页面大小,避免出现空白页 */ margin-top: 0; /* 取消页眉 */ margin-bottom: 0; /* 取消页脚 */ margin-left: 0; margin-right: 0; /* 取消默认左右页边距 */ } }
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]