打印功能主要根据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)"
]
以上打印位置、字体大小单位均为毫米,位置以纸张左边、顶部绝对位置,部分打印机的不可打印边距控件中已自动剔除,输出后的位置是实际到达纸张边缘的位置。使用时可直接以直尺测量打印位置设置。