网页调用打印机(Lodop)使用记录
最近项目中有打印标签的需要,使用Lodop实现。
Lodop
官网地址:https://www.lodop.net/index.html
这是一个收费控件,在打印时会出现试用字符,但是可以通过一定方式避免。
项目中需要打印的机器都是windows,因此安装CLodop即可。
安装之后在web页面上就可以引入对应js:
<!-- 需要安装CLodop并启动服务 -->
<script src="http://localhost:8000/CLodopFuncs.js"></script>
这里给一个例子,其他看官网教程即可。
使用Lodop调用斑马ZEBRA ZD888-203dpi ZPL标签打印机打印80mm*50mm的标签对应的函数:
function printLabelA(dataArray, options) {
if (!options) {
options = {}
}
if (!options.pageWidth) {
options.pageWidth = 800
}
if (!options.pageHeight) {
options.pageHeight = 500
}
let barcodeTop = 78;
let barcodeLeft = 90
let barcodeWidth = 200
let barcodeHeight = 30
let textHeight = 20
let textLeft = barcodeLeft
let textWidth = barcodeWidth
let textTop = barcodeTop - textHeight + 2
const SQUARE = "□";
const YES = "√";
LODOP.PRINT_INIT("标签A打印_" + Date.now());// 首先一个初始化语句
LODOP.SET_PRINT_PAGESIZE(0, options.pageWidth, options.pageHeight, 'labelPaper')// 设定纸张大小
for (const data of dataArray) {
let simpleCode = data.simpleCode;
let barCodeValue = data.barCodeValue;
let subCode = data.subCode;
let checkState = data.checkState;
let state1 = (checkState.charAt(0) === '1') ? YES : SQUARE;
let state2 = (checkState.charAt(1) === '1') ? YES : SQUARE;
let state3 = (checkState.charAt(2) === '1') ? YES : SQUARE;
let state4 = (checkState.charAt(3) === '1') ? YES : SQUARE;
if (!simpleCode) {
simpleCode = ""
}
if (!barCodeValue) {
barCodeValue = ""
}
if (!subCode) {
subCode = ""
}
if (!checkState) {
checkState = "0000"
}
let printHtml = `
<table width="285" style="border-collapse:collapse;">
<tbody>
<tr>
<td width="100%" height="180">
<p align="center">
<font face="宋体" size="5" weight="blod">样 品 标 签</font>
</p>
<p align="left" style="margin-top: 30px"><font face="宋体" size="2"> 样品编号:</font></p>
<p align="left"><font face="宋体" size="2"> 详情编号:${subCode}</font></p>
<p align="left">
<span><font face="宋体" size="3"> ${state1}状态A</font></span>
<span><font face="宋体" size="3"> ${state2}状态B</font></span>
<span><font face="宋体" size="3"> ${state3}状态C</font></span>
<span><font face="宋体" size="3"> ${state4}状态D</font></span>
</p>
</td>
</tr>
</tbody>
</table>
`
// 重点:开启新一页,可以实现多页打印
LODOP.NewPage();
// 可以通过模板的方式让其打印
LODOP.ADD_PRINT_HTM(5, 10, "100%", "100%", printHtml);
// 也可以直接添加条形码
LODOP.ADD_PRINT_BARCODE(barcodeTop, barcodeLeft, barcodeWidth, barcodeHeight, "128A", barCodeValue);
LODOP.SET_PRINT_STYLEA(0, "ShowBarText", 0);//设置是否显示二维码下方的文字
// 或者直接添加文本
LODOP.ADD_PRINT_TEXT(textTop, textLeft, textWidth, textHeight, simpleCode)// 增加纯文本项
}
// 先预览再打印不会出现试用字样。
LODOP.PREVIEW();
}