模板打印也叫”套打“,是业务系统和后台管理系统中的经常使用功能,B/S系统中实现”套打“比较繁琐,因此不少的B/S系统中的打印功能一直使用的是浏览器打印,不多实现模板打印。本篇将介绍在Vue Element Admin框架中实现模板打印功能。另外,本篇教程一样适用于Angular,Angular打印实现方式能够参考这篇文章:http://www.javashuo.com/article/p-kzbxabsc-ch.html。html
B/S系统中的打印方式分为两种,分别是浏览器打印和插件打印,二者有以下区别:vue
在众多打印插件中笔者选择了Lodop,在几番对比后发现Lodop插件有如下优点:web
Lodop虽然好用,可是最大的缺陷就是没法跨平台。windows
开始前须要安装Lodop插件,下载地址:http://www.lodop.net/demolist/CLodop_Setup_for_Win32NT.zip浏览器
解压文件并安装,肯定服务已启动,之后会自动启动。框架
相关views、router添加过程省略,本篇主要讲解Lodop打印操做。模板管理中加入“模板设计”、“模板打印”按钮测试
<el-button v-loading="loading" @click="designTemplate" type="warning">模板设计</el-button> <el-button v-loading="loading" @click="handlePrint" type="warning">模板打印</el-button>
var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement; var oscript = document.createElement("script"); oscript.src = "http://localhost:8000/CLodopfuncs.js?priority=1"; head.insertBefore(oscript, head.firstChild);
designTemplate方法代码以下:this
designTemplate() { let LODOP = getCLodop(); let _self = this; const tid = LODOP.PRINT_DESIGN(); LODOP.On_Return = function(taskID, value) { _self.templateCode = value; }; },
Lodop设计功能比较丰富,能够插入文本、图形、条码、图标、背景、大小等等。spa
Lodop预装载.net
对于一些经常使用模板无需设计可使用预装载功能,预装载会加载预先定义的模板内容,如上图中的模板内容:
templateCode: `LODOP.PRINT_INITA(10,10,762,533,"测试套打"); LODOP.ADD_PRINT_TEXT(38,78,408,30,"{{标题}}"); LODOP.SET_PRINT_STYLEA(0,"FontSize",15); LODOP.SET_PRINT_STYLEA(0,"FontColor","#800000"); LODOP.SET_PRINT_STYLEA(0,"Alignment",2); LODOP.ADD_PRINT_TEXT(259,579,100,23,"{{费用}}"); LODOP.ADD_PRINT_TEXT(260,520,58,24,"合计:");`
在设计好模板后要根据模板内容填充数据进行打印,先模拟一个打印数据:
context: { 标题: "自定义标题", 费用: "100.00 元" }
handlePrint() { let LODOP = getCLodop(); LODOP.PREVIEW(); }
打印: