Vue中使用Lodop插件实现打印功能的简单方法


Posted in Javascript onDecember 19, 2019

介绍

需要进行打印功能,Lodop就是实现需求的插件.就是引入对应的js-sdk,使用js调用对应的打印方法,然后就会调出客户端软件(需要用户安装),然后就可以在软件里面打印内容了.

使用方法

最小实现

实现打印必须要执行的3个最基本的方法

LODOP.PRINT_INIT("打印任务名");    //首先一个初始化语句 
LODOP.ADD_PRINT_TEXT(0,0,100,20,"文本内容一");//然后多个ADD语句及SET语句 
LODOP.PRINT();        //最后一个打印(或预览、维护、设计)语句

所有方法

  • PRINT_INIT(strPrintTaskName)打印初始化
  • SET_PRINT_PAGESIZE(intOrient,intPageWidth,intPageHeight,strPageName)设定纸张大小 (1横向2竖向,宽度,高度,页面大小名称宽高都设置为0的时候才可以设置"A5","A4")
  • ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,strHtml)增加超文本项
  • ADD_PRINT_TEXT(intTop,intLeft,intWidth,intHeight,strContent)增加纯文本项
  • ADD_PRINT_TABLE(intTop,intLeft,intWidth,intHeight,strHtml)增加表格项(strHtml为html模板字符串)
  • ADD_PRINT_SHAPE(intShapeType,intTop,intLeft,intWidth,intHeight,intLineStyle,intLineWidth,intColor)画图形
  • SET_PRINT_STYLE(strStyleName, varStyleValue)设置对象风格
  • PREVIEW打印预览
  • PRINT直接打印
  • PRINT_SETUP打印维护
  • PRINT_DESIGN打印设计

在Vue中使用Lodop

下载lodop,把js文件放到utils里面,把里面两个方法修改为export function(暴露出去,让其他js文件import来用)

// 改造LodopFuncs.js
//====判断是否需要安装CLodop云打印服务器:====
export function needCLodop(){ ...... }

//====获取LODOP对象的主过程:====
export function getLodop(oOBJECT,oEMBED){ ...... }

写好打印方法的逻辑

// doPrint.js
import { getLodop } from '@/utils/LodopFuncs'

/**
 * 打印方法doPrint
 * @param {*} printConfig 任务名,上边距,左边距,宽度,高度,打印html内容,是否横屏,分页
 */
export default function({ name, top, left, width, height, htmlContent, isHorizontal }) {
 const LODOP = getLodop()
 LODOP.PRINT_INIT('订货单') // 打印初始化(打印任务名)
 LODOP.SET_PRINT_PAGESIZE(1, 0, 0, 'A4')
 LODOP.SET_PRINT_STYLE('FontSize', 18) // 样式
 LODOP.SET_PRINT_STYLE('Bold', 1)
 // LODOP.ADD_PRINT_TEXT(50, 231, 260, 39, '打印页面部分内容') // 添加纯文本内容
 // top,left,width,height,htmlContent
 LODOP.ADD_PRINT_HTM(88, 75, 650, 978, htmlContent) // 添加HTML模板内容
 // LODOP.PRINT(); // 直接打印
 LODOP.PREVIEW() // 预览
}

在use.js里面把打印方法挂载到全局方法

// use.js
import doPrint from '@/utils/doPrint'

Vue.prototype.$doPrint = doPrint
在vue页面中使用
 this.$doPrint(data)
 /**
 * 注意: 这里因为用到了这个插件,所以有可能需要让这个插件内部方法在加载完成后才能正常使用
 * 也就是说,它还有以一些准备工作,例如判断方法,连接通讯等等
 * 如果直接用会报错的话,或者崩溃等其他问题,所以就可以在这里延迟再执行打印操作
 * setTimeout(()=> {
 * this.$doPrint(data)
 * })
 * */

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于JQuery的一句代码实现表格的简单筛选
Jul 26 Javascript
brook javascript框架介绍
Oct 10 Javascript
setTimeout的延时为0时多个浏览器的区别
May 23 Javascript
JS模板实现方法
Apr 03 Javascript
js闭包的用途详解
Nov 09 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
详解JavaScript中常用的函数类型
Nov 18 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
Jul 22 Javascript
jquery实现轮播图效果
Feb 13 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
Echarts实现单条折线可拖拽效果
Dec 19 #Javascript
Webpack设置环境变量的一些误区详解
Dec 19 #Javascript
Echarts实现多条折线可拖拽效果
Dec 19 #Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 #Javascript
利用JS如何获取form表单数据
Dec 19 #Javascript
在Vue项目中使用Typescript的实现
Dec 19 #Javascript
JS数据类型STRING使用实例解析
Dec 18 #Javascript
You might like
PHP实现把数字ID转字母ID
2013/08/12 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
两种php实现图片上传的方法
2016/01/22 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript string字符串优化问题
2011/07/31 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
个人工作主要事迹
2014/05/08 职场文书
反四风对照检查材料
2014/09/22 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
加薪申请报告范本
2015/05/15 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫