使用流程(支持安卓和iOS)
引入SDK
引入原生插件包地址如下
https://github.com/oldfive20250214/UniPrinterDemo
連接設備
安卓支持經典藍牙、ble藍牙、usb、局域網(參考API)
iOS支持ble藍牙、局域網(參考API)
拼接模版
聲明對象
const printer = uni.requireNativePlugin(“Printer”)
tspl模版用例1(打印常用指令)
printer.addSize({"width":75,"height":135});
printer.addCls();
printer.addDirection({"n":0,"m":0});
printer.addGap({"m":2,"n":0});
printer.addText({"x":50,"y":50,"font":"TSS16.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"16號字體"});
printer.addBox({"x":20,"y":20,"x_end":500,"y_end":800,"thickness":2,"radius":0});
printer.addText({"x":50,"y":100,"font":"TSS24.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"24號字體"});
printer.addText({"x":250,"y":50,"font":"TSS16.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"16號字體"});
printer.addReverse({"x":240,"y":40,"width":200,"height":40});
printer.addBar({"x":50,"y":200,"width":300,"height":3});
printer.addBarcode({"x":50,"y":210,"codeType":"128","height":100,"style":1,"rotation":0,"narrow":2,"wide":2,"alignment":0,"content":"test123456"});
printer.addQRCode({"x":50,"y":350,"eccLevel":"L","cellWidth":7,"mode":"M","rotate":0,"model":"M1","mask":"S3","content":"test123456"})
printer.addPrint({"m":1,"n":1});
tspl模版用例2(打印圖片)
printer.addSize({"width":75,"height":135});
printer.addCls();
printer.addDirection({"n":0,"m":0});
printer.addGap({"m":2,"n":0});
printer.addBitmap({"x":0,"y":0,"mode":0,"base64":base64});
printer.addPrint({"m":1,"n":1});
cpcl模版用例1(打印常用指令)
printer.cpcl_addInit({"height":600,"copys":1});
printer.cpcl_addUnit("IN-DOTS");
printer.cpcl_addWidth(600);
printer.cpcl_setMag({"w":1,"h":1});
printer.cpcl_addText({"cmd":"T","font":"1","size":"0","x":50,"y":150,"data":"24*24字體"});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":200,"data":"32*32字體"});
printer.cpcl_setMag({"w":2,"h":1});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":250,"data":"48*24字體"});
printer.cpcl_setMag({"w":3,"h":3});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":300,"data":"72*72字體"});
printer.cpcl_setMag({"w":1,"h":1});
printer.cpcl_addLine({"startx":50,"starty":380,"endx":250,"endy":380,"width":5});
printer.cpcl_addBarcode({"isvb":false,"codetype":"128","width":1,"radio":"1","height":50,"x":50,"y":390,"data":"test123456"});
printer.cpcl_addQrcode({"isVQ":false,"codetype":"QR","x":50,"y":450,"m":2,"n":6,"data1":"M","data2":"A","data3":"test123456"});
printer.cpcl_form();
printer.cpcl_print();
cpcl模版用例2(打印圖片)
printer.cpcl_addInit({"height":600,"copys":1});
printer.cpcl_addUnit("IN-DOTS");
printer.cpcl_addWidth(600);
printer.cpcl_addBitmap({"x":0,"y":0,"mode":0,"base64":base64});
printer.cpcl_form();
printer.cpcl_print();
esc模版用例1(打印常用指令)
printer.esc_addInit();
printer.esc_addAlign(1);
printer.esc_setCharSize({"width":0,"height":0});
printer.esc_addText("打印機居中\r\n");
printer.esc_addAlign(0);
printer.esc_setCharSize({"width":1,"height":1});
printer.esc_addText("打印機放大1-1\r\n");
printer.esc_setCharSize({"width":2,"height":2});
printer.esc_addText("打印機放大2-2\r\n");
printer.esc_setCharSize({"width":0,"height":0});
printer.esc_addLocation(10);
printer.esc_addText("text1");
printer.esc_addLocation(257);
printer.esc_addText("text2\r\n\r\n");
printer.esc_addText("width2條碼寬度36mm\r\n");
printer.esc_barCode({"width":2,"height":80,"font":1,"loc":2,"m":73,"data":"width2abcd"});
printer.esc_addText("\r\n");
printer.esc_addText("width3條碼寬度54mm\r\n");
printer.esc_barCode({"width":3,"height":80,"font":1,"loc":2,"m":73,"data":"width3abcd"});
printer.esc_addText("\r\n");
printer.esc_print();
printer.esc_addText("SIZE-1二維碼寬度3mm\r\n");
printer.esc_qrCode({"size":1,"data":"test123456"});
printer.esc_addText("\r\nSIZE-2-二維碼寬度4mm\r\n");
printer.esc_qrCode({"size":2,"data":"test123456"});
printer.esc_addText("\r\nSIZE-3-二維碼寬度7mm\r\n");
printer.esc_qrCode({"size":3,"data":"test123456"});
printer.esc_addText("\r\nSIZE-4-二維碼寬度10mm\r\n");
printer.esc_qrCode({"size":4,"data":"test123456"});
printer.esc_addText("\r\nSIZE-5-二維碼寬度13mm\r\n");
printer.esc_qrCode({"size":5,"data":"test123456"});
printer.esc_addText("\r\nSIZE-6-二維碼寬度16mm\r\n");
printer.esc_qrCode({"size":6,"data":"test123456"});
printer.esc_addText("\r\nSIZE-7-二維碼寬度18mm\r\n");
printer.esc_qrCode({"size":7,"data":"test123456"});
printer.esc_addText("\r\nSIZE-8-二維碼寬度21mm\r\n");
printer.esc_qrCode({"size":8,"data":"test123456"});
printer.esc_print();
printer.esc_feed(5);
esc模版用例2(打印圖片)
printer.esc_addInit();
printer.esc_addBitmap({"mode":0,"base64":base64});
printer.esc_feed(5);
開始打印
安卓支持經典藍牙、ble藍牙、usb、局域網(參考API)
iOS支持ble藍牙、局域網(參考API)
安卓經典藍牙API
打開藍牙
printer.spp_openBluetoothAdapter(result => {console.log(result);});
掃描藍牙
printer.spp_startBluetoothDevicesDiscovery(result => {console.log(result);});
連接藍牙
printer.spp_getConnectDevice({"address":adress},result => {
console.log(result);
});
藍牙寫入
拿到數據后再寫入拿到的數據
//獲取sdk生成的模版數據
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//將寫入模版數據的base64
printer.spp_writeData({"base64":base64},result => {console.log(result);
});
拼接好模版后直接寫入
printer.spp_writeKmPrinterData(result => {console.log(result);});
停止藍牙掃描
printer.spp_stopBluetoothDevicesDiscovery(result => {console.log(result);});
關閉藍牙
printer.spp_closeBluetoothAdapter(result => {console.log(result);});
藍牙連接狀態
printer.spp_isConnectClassicBT({"address":address},result => {console.log(result);});
低功耗藍牙API(支持安卓和iOS)
打開藍牙
printer.ble_openBluetoothAdapter(result => {console.log(result);});
掃描藍牙
printer.ble_startBluetoothDevicesDiscovery(result => {console.log(result);});
連接藍牙
printer.ble_getConnectDevice({"address":address},result => {console.log(result);});
藍牙寫入數據
拿到數據后再寫入拿到的數據
//獲取sdk生成的模版數據
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//將寫入模版數據的base64
printer.ble_writeData({"base64":base64},result => {console.log(result);
});
停止藍牙掃描
printer.ble_stopBluetoothDevicesDiscovery(result => {console.log(result);});
關閉藍牙
printer.ble_closeBluetoothAdapter(result => {console.log(result);});
藍牙連接狀態
/** 狀態對應以下數字* int STATE_CONNECTED = 2;* int STATE_CONNECTING = 1;* int STATE_DISCONNECTED = 0;* int STATE_DISCONNECTING = 3;*/
printer.ble_connectState(result => {console.log(result);});
安卓usb打印API
打開usb
printer.usb_openUsb(result => {console.log(result);});
掃描usb
printer.usb_starUsbDevicesDiscovery(result => {console.log(result);});
連接usb
printer.usb_usbConnect({"pid":pid,"vid":vid},result => {console.log(result);});
usb寫入數據
拿到數據后再寫入拿到的數據
//獲取sdk生成的模版數據
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//將寫入模版數據的base64
printer.usb_writeData({"base64":base64},result => {console.log(result);
});
usb讀取數據
printer.usb_read(result => {console.log(result);});
關閉usb連接
printer.usb_close(result => {console.log(result);});
局域網打印API(支持安卓和iOS)
連接打印機
局域網打印需要手機和打印機在同一個局域網內,手機去連接打印機的ip地址和端口
printer.net_connectScoket({"host":host,"port":port},result => {console.log(result);
});
發送數據
拿到數據后再寫入拿到的數據
//獲取sdk生成的模版數據
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//將寫入模版數據的base64
printer.net_writeData({"base64":base64},result => {console.log(result);
});
斷開連接
printer.net_closeScoket(result => {console.log(result);});
TSPL指令API(支持安卓和iOS)
指定畫板版寬高
/*** 設置打印模版寬高* @param width 打印寬度單位 mm int* @param height 打印高度 mm int* @return*/
addSize({"width":width,"height":height})
清空打印機畫板緩存
/*** 清空打印機畫板緩存* @return*/
addCls()
指定打印濃度
/*** 指定打印濃度* @param n 范圍1-15 String* @return*/
addDensity(n)
指定打印速度
/*** 指定打印速度* @param n 范圍1-8 String* @return*/
addSpeed(n)
生成文本指令
/*** 生成TEXT指令* @param x 起始x坐標 int* @param y 起始y坐標 int* @param font 字體名稱 String* @param rotate 旋轉角度 int* @param xMultiple x倍數 int* @param yMultiple y倍數 int* @param alignment 對齊方式 默認0 int* @param content 打印內容 String* @return*/addText({"x":x,"y":y,"font":font,"rotate":rotate,"xMultiple": xMultiple,"yMultiple":yMultiple,"alignment":alignment,"content":content})
生成文本塊
/*** TEXT模塊 支持換行* @param x 起始x坐標 int* @param y 起始y坐標 int* @param width 寬度,單位是點 int* @param height 高度,單位是點 int* @param font 字體名稱 int* @param rotate 旋轉角度 int* @param xMultiple x倍數 int* @param yMultiple y倍數 int* @param lineSpace 行間距 int* @param alignment 對齊 int* @param content 內容 String* @return*/
public KmPrinter crtiBlock({"x":x,"y":y,"width":width,"height":height,"font":font,"rotate":rotate,"xMultiple":xMultiple,"yMultiple":yMultiple,"lineSpace":lineSpace,"alignment":alignment,"content":content})
設置黑反打印區域
/*** 設置黑反打印區域* @param x 起點x* @param y 地點y* @param width 寬* @param height 高* @return*/
addReverse({int x, int y, int width, int height})
生成邊框指令
/*** 生成邊框指令* @param x x坐標起點* @param y y坐標起點* @param x_end x坐標結束點* @param y_end y坐標結束點* @param thickness 線條厚度* @param radius 邊框弧度* @return*/
addBox({int x, int y, int x_end, int y_end, int thickness, int radius})
生成線條指令
/*** 生成線條指令* @param x 起始x坐標* @param y 起始y坐標* @param width 寬度* @param height 高度* @return*/
addBar({int x, int y, int width, int height})
生成條碼指令
/*** 生成條碼指令* @param x x坐標* @param y y坐標* @param codeType 條碼類型* @param height 條碼高度* @param style 文字樣式* 0:不可見* 1:可見居左* 2:可見居中* 3:可見居右* @param rotation 旋轉角度* @param narrow 窄條寬度* @param wide 寬條長度* @param alignment 對齊方式* @param content 條碼內容* @return*/
addBarcode({int x, int y, String codeType, int height, int style, int rotation, int narrow, int wide, int alignment, String content})
生成二維碼指令
/*** 生成二維碼指令* @param x 起始x坐標* @param y 起始y坐標* @param eccLevel 糾錯等級 {7,15,25,30}* @param cellWidth 碼元寬度[1-10]* @param mode A:自動 M:手動* @param rotate 旋轉角度* @param model 條碼版本* M1:(默認),原始版本* M2:增強版* @param mask 掩膜版的種類,控制二維碼的樣式 S[0-8] 默認為S7* @param content 二維碼內容* @return*/
addQRCode({int x, int y, String eccLevel, int cellWidth, String mode, int rotate, String model, String mask, String content})
生成圖片指令
/*** 生成圖片指令* @param x 圖片x坐標* @param y 圖片y坐標* @param mode 圖片打印類型 0默認,正常打印 3,zlib壓縮 4,zlib反白壓縮* @param base64 圖片的base64* @return*/
addBitmap({int x, int y, int mode, String base64})
打印模版指令
/*** 打印模版* @param m 指定要打印多少套標簽。* @param n 指定每個特定標簽集應該打印多少份副本* @return*/
addPrint({int m, int n})
CPCL指令API(支持安卓和iOS)
新建打印模版
/*** 新建打印模版* @param height 打印模版高度* @param copys 打印份數* @return*/
cpcl_addInit({int height, int copys})
設置單位
/*** 設置單位* @param unit IN-INCHES 度量單位英寸* IN-CENTIMETERS 度量單位厘米* IN-MILLIMETERS 度量單位毫米* IN-DOTS 度量單位為點* @return*/
cpcl_addUnit(String unit)
設置模版寬度
/*** 設置打印模版寬度* @param width* @return*/
cpcl_addWidth(int width)
設置字體寬高倍數
/*** 設置字體寬高倍數* @param w 寬度 1-3 1到3倍* @param h 高度 1-3 1到3倍* @return*/
cpcl_setMag({int w, int h})
文本指令
/*** 文本指令* @param cmd 指令類型 (逆時針旋轉角度) 默認不旋轉* TEXT(或T)* TEXT90(或 T90)* TEXT180(或 T180)* TEXT270(或 T270)* @param font 0-6(根據打印機文檔設置)* @param size 0-6(根據打印機文檔設置)* @param x x坐標* @param y y坐標* @param data 打印數據* @return*/
cpcl_addText({String cmd, String font, String size, int x, int y, String data})
線條指令
/*** 線條指令* @param startx 起點x坐標* @param starty 起點y坐標* @param endx 終點x坐標* @param endy 終點y坐標* @param width 線條寬度* @return*/
cpcl_addLine({int startx, int starty, int endx, int endy, int width})
黑反打印區域
/*** 黑反打印區域* @param startx 起點x坐標* @param starty 起點y坐標* @param endx 終點x坐標* @param endy 終點y坐標* @param width 黑反區域寬度* @return*/
cpcl_addReverse({int startx, int starty, int endx, int endy, int width})
條碼指令
/*** 條碼指令* @param isvb 0,1 默認0* BARCODE(B):橫向打印條形碼。* VBARCODE(VB) :縱向打印條形碼* @param codetype 條碼類型 默認 128* UPC-A: UPCA、UPCA2、UPCA5* UPC-E: UPCE、UPCE2、UPCE5* EAN/JAN-13: EAN13、EAN132、EAN135* EAN/JAN-8: EAN8、EAN82、EAN 85* Code 39: 39、39C、F39、F39C* Code 93/Ext.93: 93* Interleaved 2 of 5: I2OF5* Interleaved 2 of 5(帶checksum):I2OF5C* German Post Code: I2OF5G* Code 128(自動): 128* UCC EAN 128: UCCEAN128* Codabar: CODABAR、CODABAR16* MSI/Plessy: MSI、MSI10、MSI1010、MSI1110* Postnet: POSTNET* FIM: FIM* @param width 窄條單位寬度 默認1* @param radio 寬條與窄條單位比例 默認1* @param height 條碼單位高度* @param x x坐標* @param y y坐標* @param data 條碼數據* @return*/
cpcl_addBarcode({boolean isvb, String codetype, int width, String radio, int height, int x, int y, String data})
二維碼指令
/*** 二維碼指令* @param isVQ isVQ 是否縱向* @param codetype 默認QR* @param x x坐標* @param y y坐標* @param m 選項是 1 或 2。QR Code Model 1 是原始?規范,2增強版 默認1* @param n 模塊單位寬度 1-32 默認6* @param data1 糾錯等級 H/極高可高級別 Q/高可靠級別 M/標準級別 L/高密度級別 默認M* @param data2 字符模式 N數字 A字母數字 默認 A* @param data3 二維碼內容 二維碼內容* @return*/
cpcl_addQrcode({boolean isVQ, String codetype, int x, int y, int m, int n, String data1, String data2, String data3})
圖片指令
/*** 圖片指令* @param x* @param y* @param mode 0:CG指令模式 1:EG指令模式 3:CG指令壓縮模式* @param base64 圖片的base64 * @return*/
cpcl_addBitmap({int x, int y,int mode, String base64})
打印機在一頁打印結束后切換至下一頁頂部
/*** 打印機在一頁打印結束后切換至下一頁頂部* @return*/
cpcl_form()
打印模版
/*** 打印模版* @return*/
cpcl_print()
反向出紙打印模版
/*** 反向出紙打印模版* @return*/
cpcl_poprint()
ESC指令API(支持安卓和iOS)
打印機初始化
/*** 打印機初始化* @return*/
esc_addInit()
設置絕對位置
/*** 設置絕對位置* @param n 單位dot* @return*/
esc_addLocation(int n)
文本指令
/*** 文本指令* @param text* @return*/
esc_addText(String text)
對齊方式
/*** 對齊方式* @param align 0左對齊 1居中 2右對齊* @return*/
esc_addAlign(int align)
設置字符倍寬倍高
/*** 設置字符倍寬倍高* @param width 0-7 分別是1-8倍 默認0正常* @param height 0-7 分別是1-8倍 默認0正常* @return*/
esc_setCharSize({int width, int height})
打印條碼
/*** 打印條碼* @param width 條碼寬度 2 ≤ n ≤ 6* @param height 條碼高度 1 ≤ height ≤ 255* @param font 條碼字體 0,48:標準 ASCII 碼字符 (12 × 24) 1,49:壓縮 ASCII 碼字符 (9 × 17)* @param loc 條碼位置顯示0, 48:不打印 1, 49:條碼上方 2, 50:條碼下方 3, 51:條碼上、下方都打印* @param m 條碼類型 0 ≤ m ≤ 6 65 ≤ m ≤ 73 具體用法參考文檔* @param data 條碼數據* @return*/
esc_barCode({int width, int height, int font, int loc, int m, String data})
打印二維碼
/*** 打印二維碼* @param size 二維碼大小 1-15* @param data 二維碼數據* @return*/
esc_qrCode({int size, String data})
打印圖片
/*** 打印圖片* @param mode 默認0* @param base64 圖片的base64* @return*/
esc_addBitmap({int mode, String base64})
打印并走紙多行
/*** 打印并走紙多行* @param lines 1-255 走紙的行數* @return*/
esc_feed(int lines)
打印并走紙一行
/*** 打印并走紙一行* @return*/
esc_print()