一、使用到的插件:vue-barcode(vue条形码插件),Lodop打印控件(我这里使用windows64版,所以以此进行举例说明。)。

详述:前者(指vue-barcode)针对在前端界面上观察到的效果。

   使用:

    1.安装:npm install @xkeshi/vue-barcode vue

    2.main.js中引入注册组件:import VueBarcode from '@xkeshi/vue-barcode';   Vue.component('barcode', VueBarcode);

    3.相应界面中使用:(注:这里仅提供简单使用的流程,具体有关barcode使用中的其它属性的设置请自行百度查询。)

        <barcode
                                value="1234567890"
                                :options="{ widht:100,height:50, background:'rgba(255,255,255,.0)'}"
                                style="width: 100%;height: 100%;">
                            </barcode>

      后者(指Lodop)在打印时需要使用到其专用的打印代码。(决定最终打印出来的条码)

   说明: 

     1.Lodop官网:http://www.lodop.net/

     2.Lodop官网下载中心(下载自己所需的相应版本):http://www.lodop.net/download.html

     3.Lodop在线样例:http://www.lodop.net/LodopDemo.html

    使用:

    1.先去下载中心下载Lodop打印组件发行包。如图所示:

      

    2.项目中创建LodopFun.js文件,该文件内容就是上一步中下载的安装包中的LodopFuncs.js文件。

     注意:记得在该文件的最后 导出getLodop函数。例如:export default getLodop

    3.在相应文件引入getLodop。如:import getLodop from '@/utils/LodopFuncs';

    4.代码举例:

      

         
            <div class="dayinID" v-for="(item,index) in goodCodeList" :key="item.uid" :id="'dayinID_'+index">
                        <div class="row5"> 品牌:{{ item.brandName }}</div>
                        <div class="row1">{{ item.goodName }}</div>
                        <div class="row2">{{ item.skuName }}</div>
                        <div class="row3">
                            价格:¥{{ item.price }}  
                        </div>
                        <div class="row4">
                            <barcode
                                :value="item.code"
                                :options="{ widht:100,height:50, background:'rgba(255,255,255,.0)'}"
                                style="width: 100%;height: 100%;">
                            </barcode>
                        </div>
                        <div class="tiaoma-space"></div>
                    </div>
                    <el-button class="btnClass" type="primary" plain @click="toClick" >打印</el-button>
style:
   .dayinID{width: 237px;height: 155px;border: 1px solid #000;margin-top: 10px;}
    .row5,.row1{ width: 100%;height: 20px;line-height: 20px;color: #000;text-align: center;font-weight: 700;font-size: 0.8rem;}
    .row2{ width: 100%;height: 25px;text-align: center;color: #000;font-weight: 700;font-size: 1.2rem;line-height: 25px;}
    .row3{ width: 100%;height: 20px;line-height: 20px;text-align: center;font-size: 0.8rem;}
    .row4{ width: 100%;height: 60px;}
    .tiaoma-space{width: 100%;height: 10px;margin-top: 20px;}
 
data中:
  

         goodCodeList:[  
            {uid: 1, brandName: '苹果',goodName: 'iphone13 Pro',code: '11112222333',price: 900, unit:'个', skuName: '8+526G', num: 3},
                ],
methods中:
      
      toClick() {        // 商品条码
                const LODOP = getLodop()
                if (LODOP) {
                    this.goodCodeList.forEach( (item,index) => {  // 这里为打印的商品条码
                          // 反之,则以商品的数量作为打印份数依据。(注:这里是该商品条码打印的份数)
                            for( let i=0; i<item.num; i++) {
                                var strBodyStyle = '<style>'
                                strBodyStyle += '.dayinID { width: 200px;height: 155px;border: 1px solid #000;margin-top: 10px;}'
                                strBodyStyle += '.row5,.row1 { width: 100%;height: 20px;line-height: 20px;color: #000;text-align: center;font-weight: 700;font-size: 0.8rem;}'
                                // strBodyStyle += '.row1>span { width: 50%;height: 100%;text-align: center;line-height: 30px;color: #000;float: left;}'
                                strBodyStyle += '.row2 { width: 100%;height: 25px;text-align: center;color: #000;font-weight: 700;font-size: 1.2rem;line-height: 25px;}'
                                strBodyStyle += '.row3 { width: 100%;height: 20px;line-height: 20px;text-align: center;font-size: 0.8rem;}'
                                strBodyStyle += '.row4 { width: 100%;height: 60px;}'
                                strBodyStyle += '.tiaoma-space{width: 100%;height: 10px;margin-top: 20px;}'
                                strBodyStyle += '</style>' // 设置打印样式
                                var strFormHtml = strBodyStyle + '<body>' + document.getElementById('dayinID_'+index).innerHTML + '</body>'   // 获取打印内容
                           
                                LODOP.PRINT_INIT('')  //初始化
                                LODOP.SET_PRINT_PAGESIZE(3, 790, 0, '')  // 设置横向(四个参数:打印方向及纸张类型(0(或其它):打印方向由操作者自行选择或按打印机缺省设置;1:纵向打印,固定纸张;2:横向打印,固定纸张;3:纵向打印,宽度固定,高度按打印内容的高度自适应。),纸张宽(mm),纸张高(mm),纸张名(必须纸张宽等于零时本参数才有效。))
                           
                                LODOP.ADD_PRINT_HTM('1%', '1%', '98%', '98%', strFormHtml)        // 设置打印内容
                                // LODOP.ADD_PRINT_TEXT('1%', '1%', '98%', '98%', strFormHtml)    // 设置打印内容
                                LODOP.ADD_PRINT_BARCODE( 85, 55, 230, 60, '128Auto', item.code);   // 条码(六个参数:Top,Left,Width,Height,BarCodeType,BarCodeValue)
                                // LODOP.SET_PREVIEW_WINDOW(2, 0, 0, 800, 600, '')  // 设置预览窗口模式和大小
                                // LODOP.PREVIEW()  // 预览。(这里可以进行预览,注意这里打开时记得把下面的print先注释。)另外,这里的预览只显示单个商品 打印出来的效果即该预览效果。
                                LODOP.PRINT();  // 打印
                            }
                    });
                }
            },  

  5.注:

    1.我这里的代码没有默认设置打印机相关的代码。有需要的可自行去百度。当然我这里没有的情况下就需要去控制面板的设备和打印机中 将相应的打印机设为默认。

    2.在设备和打印机中 右键打印机(设为默认的打印机)--->>>打印首选项。在其中设置自己相应的信息。

    例如(我的:)

      

     

   END:如果最后打印出来的出现样式不一致问题,请自己参考官网案例调整自己的代码。

      如果打印机出现连续走纸情况,首先可以先进行虚拟打印(举例:可使用windows的导出为 WPS PDF查看),要是没问题则就需要对打印机进行相关设置,即上面两个图中的信息。

      最后,以上信息仅供参考,具体问题具体分析。最终还是需要自己进行相应的分析。

    

Vue 使用Lodop进行标签(条码)打印的更多相关文章

  1. C# 标签(条码)的打印与设计(一)

    C# 标签(条码)的打印与设计(一) C# 标签(条码)的打印与设计(二) 总结:自定义设计条码器.

  2. [原创]Lodop打印, 以及Lodop引用css文件控制打印样式的问题.

    最近在做Lodop打印功能: 思路是:  用MasterPage搭个打印页面的框架, 然后在具体的页面中填入数据, 打印的样式由母版页和CSS来控制. 困扰了一天的问题是:  在打印的JS文件中, 引 ...

  3. C# 标签(条码)

    C# 标签(条码) 上一篇说到条码的打印,主要是通过读取模板定义文件(XML文件),然后结合从数据库中读取的动态数据结合而产生条码.下面主要说一下如何设计这个条码模板.设计过程也很简单,只需要简单的拖 ...

  4. AX 条码打印

    AX 条码打印集成在BarCode类及其之类barcode*. 由子类的defaultFont方法指定字体属性. eg, BarcodeCode39 指定条码字体"BC C39 3 to 1 ...

  5. vue之给a标签赋值

    <li v-for="(bp,index) in bpLists"> <a class="bidPublicityTitle" :href=& ...

  6. BarTender SDK 实现调用模板条码打印

    Demo:MyZebraPrint 基于BatTender .Net SDK 实现调用模板进行条码打印 有需要的朋友可以拿去研究下 在已经安装了BatTender10.1的电脑里测试通过. 下载地址: ...

  7. PowerBuilder -- 条码打印

    # 使用ocx控件 使用微软的MSBCODE9.OCX,但是注册老不成功,需要安装office之后才能注册成功,不知道有没有好的处理方法?? # 使用字体 字体下载:http://download.c ...

  8. smartforms 条码打印

    转自:http://blog.csdn.net/zhongguomao/article/details/6759642 SAP 条码打印有 新旧 两种技术方法:1.传统的(旧):将数据发送到打印机上, ...

  9. vue文件中style标签的几个标识符

    .vue文件中style标签的几个标识符 在人生就要绝望的时候, 被编辑器所提示的一个scopedSlots所拯救. 卧槽, 写到最后才发现这个属性的具体卵用. 详情见最后解决办法. 问题背景 问题由 ...

  10. sublime text 3插件改造之AutoFileName去掉.vue文件中img标签后面的width和height,完全去掉!!

    在.vue文件中img标签使用autofilename提示引入文件时,会在文件后面插入宽度高度,如下图: 文件后面会自动插入height和width,其实这两玩意儿在大多数时候并没卵用,然后就开始了百 ...

随机推荐

  1. Postgresql动态共享内存类型

    一.简介 linux为多个进程通信提供了不同的IPC机制,如:System V , POSIX 和 MMAP,所以Postgresql共享内存管理也支持以上类型. 在Postgresql中可以使用dy ...

  2. net core 依赖注入DI

    控制反转:Inversion Of Control,简称 IOC,是面向对象中的一种设计原则,调用者不自己new实例,而是交给容器去创建,可以减轻代码的耦合度. 依赖注入:Dependency Inj ...

  3. 四种语言刷算法之47. 全排列 II

    47. 全排列 II 1.C /** * Return an array of arrays of size *returnSize. * The sizes of the arrays are re ...

  4. 代码随想录训练营day 4|链表基础理论,移除链表元素,设计链表,反转链表

    链表理论基础 链表是一种由指针串联在一起的线性结构,每一个节点都由一个数据域和一个指针域组成. 链表的类型有:单链表.双链表.循环链表. 链表的存储方式:在内存中不连续分布. 链表的定义很多人因为不重 ...

  5. python 多进程和异步io的有机结合 Error in atexit._run_exitfuncs

    众所周知,python的多线程开发在GIL(全局器解释锁)下饱受诟病,在单核模式下搞多线程对效率的提升相当有限.于是大家的共识就是搞io密集的程序,建议采用多线程,计算密集型的程序就搞多进程.近期的一 ...

  6. java中使用 MultipartFile 进行文件上传而且指定了上传的临时路径,但是文件上传成功后,显示临时文件 无法删除为什么

    来自 AI BOT 回复:这是因为文件可能正在被应用程序使用,即文件已经被Java程序锁定,使得系统无法对其进行修改或删除.为了解决这个问题,你需要在保存完文件之后把它移动到正确的位置,或者在Java ...

  7. 支持批量图片转文字的【OCR】文字识别工具,支持截图识别,速度快,准确度高,免费OCR,开源软件

    想必大家偶尔也有需要从图片中提取文字的需求,虽然现在手机上都自带了拍照识别功能,可是从电脑上的图片传到手机识别再将结果发回来实 在是有点麻烦,尤其当图片数量较多时,更是费时费力,使用网页版工具又要面临 ...

  8. 微信小程序 table表格 固定表头和首列 右侧表格可以左右滚动(多种表格演练)

    https://blog.csdn.net/m0_61073617/article/details/124430213

  9. java中的ConcurrentModificationException是什么异常?在哪些场景下会报该异常?

    在软件构造实验Lab2的ConcreteVerticesGraph里,需要我们编写remove()方法.移除一个点没有别的方法,只有遍历集合vertices(),找到该点并移除. 当时我没有写上红框中 ...

  10. Mac上好用的app们

    记录下自己在mac上用的一些很不错的app,大多免费. 排名随缘. 不定期更新. Amphetamine 来源 AppStore 说明 欢迎使用Amphetamine,一款为macOS打造的最棒的防睡 ...