打印功能主要根据ChatGPT返回代码合成,目前仅提供以下功能,基本满足日常打印需求,更多功能稍后再增补。
打印前需先创建打印任务,设置纸张大小,可以同时创建多个打印任务打印任务创建
var printer = new TPrinter({ sn: "sn" //打印控件注册码 , Title: "测试打印" //打印任务名称 , PageWidth: 210 //纸张大小 宽度 单位毫米 , PageHeight: 297 //纸张大小 高度 单位毫米 //, PrinterNameKey: "XPS" //任务使用的打印机 部分打印机名称 //, PrinterName: "EPSON9F2845 (K200)" //任务使用的打印机(完整的打印机名称) //, Landscape: 0 //是否横向打印 });打印文字
printer.TEXT("测试2", { Color: "#00FF00" //文字颜色 , x: 10 //文字位置 左上角 x 坐标 单位毫米 , y: 60 //文字位置 左上角 y 坐标 单位毫米 , x1: 30 //文字位置 右下角 x1 坐标 单位毫米 (可选) , y1: 90 //文字位置 右下角 y1 坐标 单位毫米 (可选) , FontSize: 4 //文字大小 单位毫米 , Align: "center" //对其方式 左(left)中(center)右(right) , Valign: "center" //对其方式 上(top)中(center)下(bottom) , FontName: "隶书" //字体 , Rotate: 45 //文字旋转角度 , Bold: true //粗体 , Italic: true //斜体 , Strikeout: true //删除线 , Underline: true //下划线 //, Alpha: 0.8 //透明度 });
文字旋转:当设置文字打印矩形区间时(即设置x1,y1)旋转中心点以矩形的中心点旋转,只设置x,y时以文字中心点旋转。
打印直线
printer.LINE({ x: 0 //线段起始点距离纸张左边 x 毫米 , y: 55 //线段起始点距离纸张顶端 y 毫米 , x1: 180 //线段终点距离纸张左边 x1 毫米 , y1: 130 //线段终点距离纸张顶端 y1 毫米 , Color: "#ff0000" //线段颜色 不设置默认黑色 , Style: 2 //线段样式 1 线段 2 点 3线段点 4 线段点点 , Width: 1 //线条宽 毫米 //, Alpha: 0.8 //透明度 //, Page: 1 //第几页打印 });
打印矩形
printer.RECT({ x: 0 //矩形左上角距离纸张左边 x 毫米 , y: 20 //矩形左上角距离纸张顶端 y 毫米 , x1: 50 //矩形右下角距离纸张左边 x1 毫米 , y1: 50 //矩形右下角距离纸张顶端 y1 毫米 , Color: "#ff0000"//线段颜色 不设置默认黑色 , Style: 0 //线段样式 1 线段 2 点 3线段点 4 线段点点 , Width: 2 //线条宽 毫米 //, Alpha: 0.8 //线条透明度 //, Page: 2 //打印到第几页 });
打印椭圆(圆)
printer.ELLIPSE({ x: 0 //椭圆(圆)左上角距离纸张左边 x 毫米 , y: 20 //椭圆(圆)左上角距离纸张顶端 y 毫米 , x1: 50 //椭圆(圆)右下角距离纸张左边 x1 毫米 , y1: 50 //椭圆(圆)右下角距离纸张顶端 y1 毫米 , Color: "#ff0000"//线段颜色 不设置默认黑色 , Style: 0 //线段样式 1 线段 2 点 3线段点 4 线段点点 , Width: 2 //线条宽 毫米 //, Alpha: 0.8 //线条透明度 //, Page: 2 //打印到第几页 });
打印图片
printer.IMAGE({ //图片base64编码 txt: "iVBORw0KGgoAAAANSUhEUgAAAHQAAAAwCAYAAADAU15dAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAudEVYdENvcHlyaWdodABRUToxOTkzNzI0MyxFLU1haWw6bnhpYW9waW5nQDE2My5jb22/eHd+AAAAKXRFWHRBdXRob3IAyrnTw1RTY3JlZW5DYXB0dXJlIFdFQr3Yzbyy5bz+vdjIoTS+HS0AAAAwdEVYdERlc2NyaXB0aW9uAFFROjE5OTM3MjQzLEUtTWFpbDpueGlhb3BpbmdAMTYzLmNvbaFxt2AAAAAgdEVYdENyZWF0aW9uVGltZQAyMDIzOjA2OjE0IDEyOjU1OjU1Bc4z6QAAACt0RVh0U291cmNlAFFROjE5OTM3MjQzLEUtTWFpbDpueGlhb3BpbmdAMTYzLmNvbe4kA5AAAAAtdEVYdFNvZnR3YXJlAEUtTWFpbDpueGlhb3BpbmdAMTYzLmNvbTtRUToxOTkzNzI0M/1/TYcAAAJYSURBVHhe7Zw9jsIwEEZzCpC4BmfjDnuAlbjDlpR7ADpaJESFaCIKCoQEnTe2Y8cY2wkxdsLsV7wm/sk4zzM2DcXk+4tNfn8AEQrXQ/C5QCgxIJQYEEoMCCUGhBIDQokBocSAUGJAKDEglBgQSgwIrVmeb6y8HtnC0dadHVvfT2zpbMtDPqHbI9vfL2y1dbS9DP9wlQDBO+bcsMWBx3dj+3LjaO/I4SRjit4Y/RlQqCklzPpQZ5B+Zs5Tydhu2Opqtlucd3XfMIvyUvWPzLBaKo/Z2Z6Y8WWo54MIoV4xUqgru/Q48X5Dci94/N03opu0JTmx0MDifWUpldCH5/7+JmLsU5xyTb0yUKzto4UaDJ2h1nNRXoNnnW9OCJWMTKiMJ/BxO8Qrz9xq/lbSSjT5v0Jbyq4YF3lbFXN0WfMbGUgoL1uehYaEPux6BZ+nj9DQrTairApkPDkzU5FZqJIQWGi2DOW4x4kxvbNzOJmcDELNm+6YSm6N9b7Y36Ltl620pBVqltnRnaENUmIVW8nfHY5RzKc3aE9a4onhH1+KTFSZrIjMLtoZapJAqMws3jdGqJJZlVl9zneI0wOE2oSEio9tos46n1C/aDMr7fbmXa+fpRBqI4Ta/cyLVYu4ekM0WFJ0Fj5vGhtzE7X1VYgxlIU+ZJZrocYH1jhKJN/57kzjhDKxRr+nxw1WbxLXhmwyXdFVfgryZSjIAoQSA0KJAaHEgFBiQCgxIJQYEEoMCCUGhBIDQokBocSAUGJAKDEglBj480ZiFNP5nEEqESqPxXQ6Y4AKM/YHE3UOmvD/ArsAAAAASUVORK5CYII=" , x: 10 , y: 90 //, x1:50 //设置图像打印区域 (可选)不设置按实际大小打印 //, y1:180 //设置图像打印区域(可选)不设置按实际大小打印 //, Rotate: 190 //图片旋转角度 //, Alpha: 0.8 //图片透明度 });
打印条码、二维码
printer.BARCODE({ txt: "089600124569" , x: 10 , y: 100 , x1: 50 , y1: 140 , Color: "blue" , BgColor: "#00ff00" , Type: "QR_Code" , QrLevel: "L" //二维码容错级别 可选参数 H L M Q , Rotate: 45, Page: i + 1 });
新增页
printer.NewPage({ PageWidth: 210 , PageHeight: 297 });
提交打印
printer.print();
获取打印机列表
printer.GetPrinters(function (dat) { console.log(dat.PList); });
返回的打印机列表数据为打印机名称(dat.PList的 JSON 格式如下)
[ "导出为WPS PDF", "Microsoft XPS Document Writer", "Fax", "EPSON9F2845 (K200)" ]
以上打印位置、字体大小单位均为毫米,位置以纸张左边、顶部绝对位置,部分打印机的不可打印边距控件中已自动剔除,输出后的位置是实际到达纸张边缘的位置。使用时可直接以直尺测量打印位置设置。