打印调用方法

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