uni-APP使用lodop打印工具
<p>公司仓库需要打印小票。最终效果如下图:</p><p><img src="https://img2018.cnblogs.com/common/847498/202001/847498-20200128182411935-1595586809.png"></p>
<p>经过调查,首先选用了康虎云打印,原因是简单容易上手。但发现存在几个问题:</p>
<p>1、小票打印机,纸张的切刀操作,多执行了一次。采用的是小票打印机,专门购买了带切刀功能的,解决了撕纸缺口不整齐的问题。但采用康虎云打印的时候,发现在正确切纸完成后,会继续出纸2cm左右,然后再进行一次切纸。每次都浪费2cm的纸,虽然是个小问题,但总觉得不太爽。</p>
<p>2、当数据量大时候,超过一定量的数据会无法打印。如上图,底部表格的数据没有打印出来。</p>
<p>以上两个问题,咨询了作者,说需要把打印机寄过去进行有偿调试,费用大概1000-2000元。之前调查打印工具的时候发现除了康虎云打印,还有lodop,相对来讲,lodop入门稍微难一些,但功能强大,用户也比较多。就决定先用lodop试一下。</p>
<p> </p>
<p>(声明:本教程是在局域网环境下使用的,广域网环境大同小异)</p>
<p>以下是lodop的安装使用方法:</p>
<p>lodop的入门和使用,以及原理结构,请看lodop的官网。http://www.lodop.net</p>
<p>服务端下载地址:http://www.lodop.net/download.html</p>
<p>选择<strong>云打印C-Lodop扩展版</strong>,安装到windows上(目前只支持windows,不支持Linux),下文称此台windows主机为server1,假设局域网IP为192.168.0.105</p>
<p> </p>
<p>下载库文件,下载地址:https://files.cnblogs.com/files/shen55/CLodopfuncs.js</p>
<p>引入该文件。例如放到uni-APP项目文件的/common/print/目录,在打印页面,引入方法:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> import { getCLodop } from '@/common/print/CLodopfuncs.js'
<span style="color: rgba(0, 128, 128, 1)">2</span> let getLodop = getCLodop</pre>
</div>
<p>引入成功以后,打开CLodopfuncs.js文件。将第19、20行的IP地址修改为server1的IP地址。大部分人电脑上有多个打印机(包括虚拟打印机),那么就会带来一个问题,如果点击打印,到底是哪个打印机执行打印?如果是默认打印机,那如果我想指定某台打印机该如何操作?答案是让用户自己设定。将打印机的序号保存到名为printIndex的在Storage中。例如下图中</p>
<p><img src="https://img2018.cnblogs.com/i-beta/847498/202001/847498-20200129144101540-1959121410.png"></p>
<p> </p>
<p>如果选择倒数第二个打印机(Print to Evernote),则printIndex保存的值为1;如果选择倒数第一个打印机,则printIndex保存的值为0;</p>
<p>以下代码为打印操作的调用代码</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">sendPrint (下单时间, 备注, 手机号码, 联系人姓名, 订单号, 配货人编号, height, table) {
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> let LODOP = getLodop()<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 调用getLodop获取LODOP对象</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> LODOP.PRINT_INIT()
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> LODOP.SET_PRINTER_INDEX('XP-80C (发货清单)'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> LODOP.SET_PRINT_PAGESIZE(1, 721, height, ''<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> LODOP.ADD_PRINT_TEXT(20, 0, 274, 26, '配件商城发货清单'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> LODOP.SET_PRINT_STYLEA(0, 'FontSize', 12<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> LODOP.SET_PRINT_STYLEA(0, 'Bold', 1<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">10</span> LODOP.ADD_PRINT_TEXT(48, 0, 274, 20<span style="color: rgba(0, 0, 0, 1)">, `联系方式:${手机号码} ${联系人姓名}`)
</span><span style="color: rgba(0, 128, 128, 1)">11</span> LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">12</span> LODOP.ADD_PRINT_TEXT(66, 0, 274, 20<span style="color: rgba(0, 0, 0, 1)">, `下单时间:${下单时间}`)
</span><span style="color: rgba(0, 128, 128, 1)">13</span> LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">14</span> LODOP.ADD_PRINT_BARCODE(84, 10, 220, 62, '128Auto'<span style="color: rgba(0, 0, 0, 1)">, `${订单号}`)
</span><span style="color: rgba(0, 128, 128, 1)">15</span> LODOP.ADD_PRINT_TEXT(84, 230, 60, 20, '配货员'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">16</span> LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">17</span> LODOP.ADD_PRINT_TEXT(104, 230, 40, 20<span style="color: rgba(0, 0, 0, 1)">, `${配货人编号}`)
</span><span style="color: rgba(0, 128, 128, 1)">18</span> LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">19</span> LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">20</span> LODOP.SET_PRINT_STYLEA(0, 'Bold', 1<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">21</span> LODOP.ADD_PRINT_TEXT(150, 0, 274, 40<span style="color: rgba(0, 0, 0, 1)">, `备注:${备注}`)
</span><span style="color: rgba(0, 128, 128, 1)">22</span> LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">23</span> LODOP.ADD_PRINT_RECT(206, 0, 274, 1, 0, 1<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">24</span> LODOP.ADD_PRINT_TABLE(220, 0, 274, height - 800<span style="color: rgba(0, 0, 0, 1)">, table)
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(process.env.NODE_ENV === 'development'<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 开发环境</span>
<span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)"> LODOP.PREVIEW()
</span><span style="color: rgba(0, 128, 128, 1)">28</span> }<span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 生产环境</span>
<span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)"> LODOP.PRINT()
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">32</span> }</pre>
</div>
<p>是的。你没看错,我使用中文做变量,在js中是合法的,只是用的人比较少而已。打印内容根据需要自行定义,上面只是参考。</p>
<p>CLodopfuncs.js这个文件,是经过修改的,与工具自带的不同。</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/shen55/p/12238629.html
頁:
[1]