毕业后第一份工作是做后台管理系统的,项目中要求有打印小票功能,然而我并不知道,该怎么写,百度了很多。一开始在网上查到很多都在用electron+vue我以为我可以用这个呢,搞了两天,才发现这是做桌面软件的,后来查到lodop才开始用的,在这里我得先感谢我的后端,因为如果没有我这个后端,我有可能转行了。现在我把在项目中怎么实现的说一下,我做的很糙,希望能对你们有些帮助。**第一步**创建一个叫LodopFuncs.js放到用的页面同级,也可以放到公共文件夹,统一管理方便。![在这里插入图片描述](https://img-blog.csdnimg.cn/2020010215453080.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hb21pMTk5,size_16,color_FFFFFF,t_70)
var CreatedOKLodop7766 = null;//====判断是否需要安装CLodop云打印服务器:====
export function needCLodop() {try {var ua = navigator.userAgent;if (ua.match(/Windows\sPhone/i) != null) return true;if (ua.match(/iPhone|iPod/i) != null) return true;if (ua.match(/Android/i) != null) return true;if (ua.match(/Edge\D?\d+/i) != null) return true;var verTrident = ua.match(/Trident\D?\d+/i);var verIE = ua.match(/MSIE\D?\d+/i);var verOPR = ua.match(/OPR\D?\d+/i);var verFF = ua.match(/Firefox\D?\d+/i);var x64 = ua.match(/x64/i);if ((verTrident == null) && (verIE == null) && (x64 !== null))return true; elseif (verFF !== null) {verFF = verFF[0].match(/\d+/);if ((verFF[0] >= 42) || (x64 !== null)) return true;} elseif (verOPR !== null) {verOPR = verOPR[0].match(/\d+/);if (verOPR[0] >= 32) return true;} elseif ((verTrident == null) && (verIE == null)) {var verChrome = ua.match(/Chrome\D?\d+/i);if (verChrome !== null) {verChrome = verChrome[0].match(/\d+/);if (verChrome[0] >= 42) return true;};};return false;} catch (err) { return true; };
};//====页面引用CLodop云打印必须的JS文件:====//====获取LODOP对象的主过程:====
export function getLodop(oOBJECT, oEMBED) {var strHtmInstall = "<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";var strHtmUpdate = "<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";var strHtm64_Install = "<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";var strHtm64_Update = "<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";var strHtmFireFox = "<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";var strHtmChrome = "<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";var strCLodopInstall = "<br><font color='#FF00FF'>CLodop云打印服务(localhost本地)未安装启动!点击这里<a href='http://39.106.127.127:8888/group1/M00/00/00/J2p_f14Jj5qABHY-ADNxndshBC8910.exe' target='_self'>执行安装</a>,安装后请刷新页面。</font>";var strCLodopUpdate = "<br><font color='#FF00FF'>CLodop云打印服务需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>,升级后请刷新页面。</font>";var LODOP;try {// var isIE = (navigator.userAgent.indexOf('MSIE') >= 0) || (navigator.userAgent.indexOf('Trident') >= 0);// if (needCLodop()) {try { LODOP = getCLodop(); } catch (err) { };if (!LODOP && document.readyState !== "complete") { alert("C-Lodop没准备好,请稍后再试!"); return; };if (!LODOP) {// if (isIE) document.write(strCLodopInstall); else//     document.documentElement.innerHTML = strCLodopInstall + document.documentElement.innerHTML;// return;var r = confirm("下载安装插件,请把浏览器拦截关闭,安装成后刷新页面重试");if (r == true) {window.open("http://39.106.127.127:8888/group1/M00/00/00/J2p_f14Jj5qABHY-ADNxndshBC8910.exe")//如果你没有安装C-Lodop就需要在软件安装,这个地址是我后端给我的,前端也可以找个链接跳过去下载也是可以的}}// else {// if (CLODOP.CVERSION < "3.0.0.2") {//     if (isIE) document.write(strCLodopUpdate); else//         document.documentElement.innerHTML = strCLodopUpdate + document.documentElement.innerHTML;// };// if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED);// if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT);// };// } else {//     var is64IE = isIE && (navigator.userAgent.indexOf('x64') >= 0);//     //=====如果页面有Lodop就直接使用,没有则新建:==========//     if (oOBJECT != undefined || oEMBED != undefined) {//         if (isIE) LODOP = oOBJECT; else LODOP = oEMBED;//     } else if (CreatedOKLodop7766 == null) {//         LODOP = document.createElement("object");//         LODOP.setAttribute("width", 0);//         LODOP.setAttribute("height", 0);//         LODOP.setAttribute("style", "position:absolute;left:0px;top:-100px;width:0px;height:0px;");//         if (isIE) LODOP.setAttribute("classid", "clsid:2105C259-1E0C-4534-8141-A753534CB4CA");//         else LODOP.setAttribute("type", "application/x-print-lodop");//         document.documentElement.appendChild(LODOP);//         CreatedOKLodop7766 = LODOP;//     } else LODOP = CreatedOKLodop7766;//     //=====Lodop插件未安装时提示下载地址:==========//     if ((LODOP == null) || (typeof (LODOP.VERSION) == "undefined")) {//         // debugger//         if (navigator.userAgent.indexOf('Chrome') >= 0)//             document.documentElement.innerHTML = strHtmChrome + document.documentElement.innerHTML;//         if (navigator.userAgent.indexOf('Firefox') >= 0)//             document.documentElement.innerHTML = strHtmFireFox + document.documentElement.innerHTML;//         if (is64IE) document.write(strHtm64_Install); else//             if (isIE) document.write(strHtmInstall); else//                 document.documentElement.innerHTML = strHtmInstall + document.documentElement.innerHTML;//         return LODOP;//     };// };// if (LODOP.VERSION < "6.0") {//     if (!needCLodop()) {//         if (is64IE) document.write(strHtm64_Update); else//             if (isIE) document.write(strHtmUpdate); else//                 document.documentElement.innerHTML = strHtmUpdate + document.documentElement.innerHTML;//     };//     return LODOP;// };//===如下空白位置适合调用统一功能(如注册语句、语言选择等):===//LODOP.SET_LICENSES("北京XXXXX公司","8xxxxxxxxxxxxx5","","");//===========================================================return LODOP;} catch (err) { alert("getLodop出错:" + err); };
};if (needCLodop()) {// console.log(needCLodop())var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;try {var oscript = document.createElement("script");oscript.src = "http://localhost:8000/CLodopfuncs.js?priority=1";head.insertBefore(oscript, head.firstChild);oscript = document.createElement("script");oscript.src = "http://localhost:18000/CLodopfuncs.js?priority=0";head.insertBefore(oscript, head.firstChild);} catch (err) {}//引用双端口(8000和18000)避免其中某个被占用:};

第二步在页面中使用
import { getLodop } from “./LodopFuncs”;

<div class="tab_company_out" id="box" style="width:300px;display:none"><h2 style="text-align:center;line-height:35px;">{{shop.storeName}}</h2><table class="cont1" style="width:300;border-bottom:1px solid #000"><tr style="border-bottom:1px solid #000"><td width="100">销售单:</td><td width="200" style="text-align: left;">{{tableData.form.businessUserName}}</td></tr><tr><td width="100">收银员:</td><td width="200" style="text-align: left;">{{tableData.form.businessUserName}}</td></tr><tr><td width="100">打印时间:</td><td width="200" style="text-align: left;">{{tableData.form.time}}</td></tr><tr><td width="100">创单时间:</td><td width="200" style="text-align: left;">{{tableData.form.createTime}}</td></tr><tr><td width="100">会员卡号:</td><td width="200" style="text-align: left;"></td></tr></table><div class="content"><tablecellpadding="0"cellspacing="0"style="width:300px;border-bottom:1px solid #000"><tr><th width="180" style="text-align:left">货号/商品名称/规格</th><th width="50" style="text-align:right">数量</th><th width="70" style="text-align:right">金额</th></tr><!-- 每页显示onePageRow条数据 --><tr v-for="(row,index) in tableData.list" :key="index"><td style="font-size:13px">{{row.productName }}/{{row.productAttribute}}</td><td>{{row.productNumber}}</td><td>{{row.productPrice==null?0.00:row.productPrice.toFixed(2)}}</td></tr></table></div><table class="cont1" style="width:300"><tr><td width="150">商品合计:</td><tdwidth="150"style="text-align: left;">{{tableData.form.orderPlanPrice==null?0.00:tableData.form.orderPlanPrice.toFixed(2)}}</td></tr><tr><td width="150">信用购优惠:</td><tdwidth="150"style="text-align: left;">{{tableData.form.reductionPrice==null?0.00:tableData.form.reductionPrice.toFixed(2)}}</td></tr><tr><td width="150">其他优惠:</td><td width="150" style="text-align: left;">0.00</td></tr><tr><td width="150">优惠券金额:</td><tdwidth="150"style="text-align: left;">{{tableData.form.couponPrice==null?0.00:tableData.form.couponPrice.toFixed(2)}}</td></tr><tr><td></td><td></td></tr><tr><td width="150">应付金额:</td><tdwidth="150"style="text-align: left;">{{tableData.form.orderPlanPrice==null?0.00:tableData.form.orderPlanPrice.toFixed(2)}}</td></tr><tr><td width="150">银联pos结算:</td><tdwidth="150"style="text-align: left;">{{tableData.form.posPrice==null?0.00:tableData.form.posPrice.toFixed(2)}}</td></tr><tr><td width="150">扫码/和包结算:</td><tdwidth="150"style="text-align: left;">{{tableData.form.scanPricee==null?0.00:tableData.form.scanPrice.toFixed(2)}}</td></tr><tr><td width="150">华为pos结算:</td><td>{{tableData.form.huaweiK3Price==null?0.00:tableData.form.huaweiK3Price.toFixed(2)}}</td></tr><tr><td width="150">对公转账结算:</td><tdwidth="180"style="text-align: left;">{{tableData.form.publicPrice==null?0.00:tableData.form.publicPrice.toFixed(2)}}</td></tr><tr><td width="150">现金结算:</td><tdwidth="150"style="text-align: left;">{{tableData.form.cashPrice==null?0.00:tableData.form.cashPrice.toFixed(2)}}</td></tr></table><div style="font-size:13px;text-align:center">依法预付费卡、第三方卡、制服优惠的支付方式其消费金额不再重复开立发票。</div><div><p style="text-align: center">扫码自助开票</p><div class="img" style="width:80px;height:40px;margin:0 auto"><img style="width:80px;height:40px" src="../../assets/erweima.png" alt /></div></div><table style="width:300px"><tr style="text-align:center"><td>信用购优惠:</td></tr><tr style="text-align:center"><td>{{tableData.form.orderCode}}</td></tr></table></div></div>
在methods中定义函数     想在哪里调用在哪里调用此函数
printPdf() {var strHTML = document.getElementById("box").innerHTML;let LODOP = getLodop();if (LODOP != null && typeof LODOP.VERSION != "undefined") {LODOP.PRINT_INIT("");LODOP.SET_PRINT_PAGESIZE(3, "58mm", "10mm", "CreateCustomPage");LODOP.SET_PRINT_STYLE("FontSize", 15); // 设置打印字体LODOP.SET_PRINT_STYLE("Bold", 1); // 设置加粗LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Height:90%");LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Full-Width");LODOP.ADD_PRINT_HTM(10, 10, "100%", "70%", strHTML);LODOP.PRINT();//}},

最关键的是一定要安装C-Lodop (Print)否则打印预览时是空白页!!!!!!!!!!!!!

vue项目使用LODOP打印小票功能相关推荐

  1. Android集成佳博热敏打印机打印小票功能

    一.说明 最近公司项目需要做打印机打印小票功能,首先公司买了一个佳博小票打印机作为测试用机.然后在开发的过程中也遇到一些坑,在此记录一下. 二.集成过程 1. 下载开发文档 首先需要去其官网下载SDK ...

  2. vue 项目中页面打印实现(去除页眉页脚)

    vue 项目中页面打印实现 参考文章: 13 Paged media 项目描述: 背景:框架vue.组件 element-ui,已有一个在用的后台管理系统 需求:现需在列表页面添加按钮-----打印协 ...

  3. Vue项目中添加锁屏功能

    0. 直接上 预览链接 Vue项目中添加锁屏功能 1. 实现思路 ( 1 ) 设置锁屏密码 ( 2 ) 密码存localStorage (本项目已经封装h5的sessionStorage和localS ...

  4. vue热敏打印机_electron + vue项目实现打印小票功能及实现代码

    一 需求: 公司项目需要通过electron调用系统打印机,实现打印小票的功能. 二.分析: electron打印大概有两种: 第一种:通过window的webcontent对象,使用此种方式需要单独 ...

  5. vue热敏打印机_electron + vue项目实现打印小票功能

    前言:该文章需要一定的electron基础同学.如需了解更多相关信息,请移步electron官方文档. 一.需求: 公司项目需要通过electron调用系统打印机,实现打印小票的功能. 二.分析: e ...

  6. vue项目实现前端打印功能

    一.直接使用window自带的打印功能: window.print() <template><div><p>点击下面的按钮,可将div里的内容区域进行打印</ ...

  7. 记一次Electron 桌面应用实现调用打印机打印小票功能

    项目背景 实现一款交互屏桌面应用软件,类似医院那张种给用户操作办理业务的应用程序.操作业务中在充值后可供用户打印小票. 开发框架:electron-vue vue版本:v2.6.14 electron ...

  8. 肯德基收款打印小票功能

    题目: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常 ...

  9. Java实现安卓连接商米POS收银机打印小票功能

    在收银系统中经常使用到打印小票的功能.本文将Java如何实现商米POS收银机打印小票的功能.包括""定义管理打印相关方法的类,封装好方法供外部调用"."调用打印 ...

最新文章

  1. Oracle优化06-Hint
  2. 8051中断系统介绍
  3. 电磁波传播相位是否会变化_相位常数β与波数k是一回事吗?
  4. android ndk 9,Android NDK:警告:APP_PLATFORM android-9大于android:minSdkVersion 8
  5. 投资大鳄摩根士丹利成Accellion FTA 服务器被黑事件的又一个受害者
  6. python colorbar设置大小及位置_matplotlib colorbar更改轴大小
  7. JavaScript(三)数据类型转换
  8. Java 笔记(二)
  9. c语言 graph,基于图(graph)的应用举例
  10. ue4水墨材质_PS使用水墨烟雾笔刷临摹一匹水墨烟雾骏马_资源库
  11. arduino nano实现Ps2手柄控制舵机旋转至任意角度
  12. 【转】SD和SDHC和SDXC卡的区别
  13. idea中xml文件用浏览器打开
  14. 常见物理量的量纲在OpenFOAM中的表示
  15. 中国人民大学计算机考研分数线2020,中国人民大学2020考研国家线-复试分数线-录取分数线 - 希赛网...
  16. 块级元素、行内元素、行内块级元素的特点
  17. 乐高JAVA编程_编程和乐高机器人,是一样的吗?学习这些有用吗?
  18. 高中数学必修2试题:直线平面平行的判定及其性质
  19. 在JDBC中使用预编译Statement 以及它的优点
  20. 如何在完全不懂服务器开发的情况下做一个实时联网对战的微信小游戏

热门文章

  1. 盘古开源解析:芯片订单超过产能,2022汽车出现缺芯难题
  2. python中经常使用的包扎材料_以下哪些是经常使用的包扎材料:
  3. 硬件学习笔记(一)AD入门+STM32C8T6最小开发板得制作
  4. 【CodeForces - 869】 A B C E 【组合数打表】
  5. 119全国消防日,我们要注意用火安全
  6. 小学计算机课教师教学笔记,小学信息技术教师读书笔记
  7. Caused by: hudson.plugins.git.GitException: Command “git fetch --tags --progress -- https://github.
  8. 机械臂编程_建立自己的机械臂-编程
  9. Linux学习之错误与解决记录(持续更新)
  10. 博途TIA Portal V15 下载与安装教程