You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

153 lines
4.8 KiB

var LODOP = getCLodop();
//初始化
function initPrintSetting(clodoplisence) {
try{
var LODOP= getCLodop();
if (LODOP.VERSION) {
if (LODOP.CVERSION){
//alert("当前有WEB打印服务C-Lodop可用!\n C-Lodop版本:"+LODOP.CVERSION+"(内含Lodop"+LODOP.VERSION+")");
//如果没有问题打印的信息
//LODOP.SET_LICENSES("","646464550585055535859561289003","688858710010010811411756128900","");
LODOP.SET_LICENSES("",clodoplisence,"","");
//判断当前打印模式
/* if(printerData.seq >= 0){
LODOP.SET_PRINTER_INDEXA(printerData.printName);
LODOP.PRINT();
}else if(printerData.seq === -1){
LODOP.PREVIEW();
}else if(printerData.seq === -2){
LODOP.PRINT_DESIGN();
}*/
}else {
alert("本机已成功安装了Lodop控件!\n 版本号:"+LODOP.VERSION);
}
};
}catch(err){
}
};
//批量打印标签的方法
function printRollLabel(printRow, printerData){
// 初始化 LODOP 对象
initPrintSetting(printerData.clodoplisence);
//初始化打印机
LODOP.NewPage();
LODOP.SET_PRINT_PAGESIZE(0,770,770,"");
//打印二维码内容
LODOP.ADD_PRINT_BARCODE(10,23,75,75,"QRCode", printRow.qrtext);
LODOP.SET_PRINT_STYLE("FontSize",18);
LODOP.ADD_PRINT_TEXT(80,26,300,20,row.qrtext);
//判断是否存在
let partType = printRow.partType;
if(partType && partType != ''){
LODOP.ADD_PRINT_TEXT(45,150,120,75, partType);
LODOP.SET_PRINT_STYLE("FontSize",14);
}
LODOP.ADD_PRINT_TEXT(100,26,300,20,"SO No:"+printRow.orderNo);
LODOP.ADD_PRINT_TEXT(120,26,300,20,"Part No:"+printRow.partNo);
LODOP.ADD_PRINT_TEXT(140,26,300,20,"APN:"+printRow.apn);
LODOP.ADD_PRINT_TEXT(160,26,300,20,"qty:"+printRow.qty);
LODOP.ADD_PRINT_TEXT(180,26,300,20,"Operator:"+printRow.username);
LODOP.ADD_PRINT_TEXT(200,26,300,20,"Create Date:"+printRow.createdDate);
//判断是否存在排位
let col = printRow.col;
if(col){
LODOP.ADD_PRINT_TEXT(220,26,300,20,"排位:"+col);
}
let rewind = printRow.rewind;
if(rewind){
LODOP.ADD_PRINT_TEXT(232,164,123,41,rewind);
LODOP.SET_PRINT_STYLEA(0,"FontSize",21);
LODOP.SET_PRINT_STYLEA(0,"Bold",1);
}
//判断当前打印模式
if(printerData.seq >= 0){
LODOP.SET_PRINTER_INDEXA(printerData.printName);
LODOP.PRINT();
}else if(printerData.seq === -1){
LODOP.PREVIEW();
}else if(printerData.seq === -2){
LODOP.PRINT_DESIGN();
}
}
//生成二维码
function generateDataMatrixImage(serialNo, width, height) {
const canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
const ctx = canvas.getContext('2d');
// 白色背景
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, width, height);
// 生成DataMatrix码
const codeCanvas = document.createElement('canvas');
try {
bwipjs.toCanvas(codeCanvas, {
bcid: 'datamatrix', // 条码类型:DataMatrix
text: serialNo, // 要编码的文本
scale: 35, // 缩放因子
height: 9, // 条码高度
includetext: false, // 不在条码中包含文本
backgroundcolor: 'ffffff', // 白色背景
barcolor: '000000' // 黑色条码
});
// 将条码绘制到主canvas上方(占用约2/3高度)
const codeSize = Math.min(width * 0.95, height * 0.65);
const codeX = (width - codeSize) / 2; // 水平居中
const codeY = height * 0.05; // 顶部留5%空白
ctx.drawImage(codeCanvas, codeX, codeY, codeSize, codeSize);
} catch (e) {
console.error('生成DataMatrix失败:', e);
}
// 返回图片的base64数据
return canvas.toDataURL('image/png');
}
//打印A类型标签
function printPageA(serialNo, dmCode){
//初始化打印机
LODOP.NewPage();
LODOP.SET_PRINT_PAGESIZE(0,150,150,"");
LODOP.ADD_PRINT_IMAGE(5, 10, 46, 46, dmCode);
LODOP.SET_PRINT_STYLEA(0, "Stretch", 2);
}
//打印B类型标签
function printPageB(serialNo, dmCode){
//初始化打印机
LODOP.NewPage();
LODOP.SET_PRINT_PAGESIZE(0,600,180,"");
LODOP.ADD_PRINT_IMAGE(2, 17, 46, 46, dmCode);
LODOP.SET_PRINT_STYLEA(0, "Stretch", 2);
//打印二维码的内容
LODOP.ADD_PRINT_TEXT(40,25,220,15, serialNo);
LODOP.SET_PRINT_STYLEA(0,"FontName","微软雅黑");
LODOP.SET_PRINT_STYLEA(0,"FontSize",8);
LODOP.SET_PRINT_STYLEA(0,"Bold",1);
}
//打印C标签
function printPageC(serialNo, dmCode){
//初始化打印机
LODOP.NewPage();
LODOP.SET_PRINT_PAGESIZE(0,400,120,"");
LODOP.ADD_PRINT_IMAGE(2, 15, 36, 36, dmCode);
LODOP.SET_PRINT_STYLEA(0, "Stretch", 2);
//打印二维码的内容
LODOP.ADD_PRINT_TEXT(32,21,220,15,serialNo);
LODOP.SET_PRINT_STYLEA(0,"FontName","微软雅黑");
LODOP.SET_PRINT_STYLEA(0,"FontSize",6);
LODOP.SET_PRINT_STYLEA(0,"Bold",1);
}