uni-app實現商米硬件打印


本文檔用到的設備型號:商米(sunmi)V2,2G+16G。

需要引用商米打印插件(每個APP項目需要花費1元購買該插件),插件地址:ext.dcloud.net.cn/plugin?id=8…

 

 

文檔上基本打印指令的參考案例,針對於打印圖片該文檔並沒有提供方法直接使用,要通過ESC指令內容來執行打印,參考方法sunmi_print.printRawData(data)。其中,data為圖片轉化成的ESC指令,此處在服務器端進行轉換(用戶端的轉換效率太低)。

ESCPOS指令文檔參考商米的官方文檔:docs.sunmi.com/general-fun…

 

 

 

/*
* @param $file_path 本地圖片路徑,圖片進行大小整合thumb(400,210)長為400寬為210以符合打印要求 * @return $data 打印插件直接使用的數據 */ public function imageFileToEsc($file_path) { $image = Image::open($file_path); $image->thumb(400, 210)->save($file_path); //規范化圖片 $i = imagecreatefrompng($file_path); $width = ceil(imagesx($i) / 8) * 8 - 8; $height = imagesy($i); $data = []; $data[0] = 0x1D; $data[1] = 0x76; $data[2] = 0x30; $data[3] = 0; $data[4] = $width / 8 % 256; $data[5] = (int)($width / 8 / 256); $data[6] = $height % 256; $data[7] = (int)($height / 256); $index = 8; for ($y = 0; $y < $height; $y++) { for ($x = 0; $x < $width; $x += 8) { $part = []; for ($j = 0; $j < 8; $j++) { $read_width = $x + $j >= $width ? $width : $x + $j; $rgb = imagecolorat($i, $read_width, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $gray = (int)($r * 0.3 + $g * 0.59 + $b * 0.11); if ($gray > 127) { $part[] = 0; } else { $part[] = 1; } } $temp = $part[0] * 128 + $part[1] * 64 + $part[2] * 32 + $part[3] * 16 + $part[4] * 8 + $part[5] * 4 + $part[6] * 2 + $part[7] * 1; $data[$index++] = $temp; } } return $data; }復制代碼

 

 

 

 

//引用插件
const sunmi_print= uni.requireNativePlugin('Sunmi-Print'); //連接打印機 //首次啟動app時調用此方法,使app可以連上打印機,從而可以操作打印 sunmi_print.init(); //打印圖片 sunmi_print.printRawData(data); //斷開打印機 sunmi_print.destroy();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM