B/S WEB端條碼打印系統(tǒng) 斑馬條碼打印解決方案

簡(jiǎn)介:

B/S應(yīng)用系統(tǒng)的打印一直以來(lái)都是一個(gè)難題,以前常規(guī)的思路是通過(guò)在瀏覽器中安裝ActiveX插件以獲得直接驅(qū)動(dòng)打印機(jī)的能力。
隨著瀏覽器的發(fā)展,越來(lái)越多的瀏覽器廠商禁止安裝ActiveX,以避免因ActiveX組件導(dǎo)致的各種安全問(wèn)題。
本打印系統(tǒng)是web客戶端打印,不需要在瀏覽器安裝任何插件,使用socket通信,跨網(wǎng)段,云打印(不限外網(wǎng),不只是局域網(wǎng)打印哦,外網(wǎng)也可以),打印過(guò)程不會(huì)有彈窗,基于asp.net mvc,層次結(jié)構(gòu)清楚,可在源碼基礎(chǔ)上進(jìn)行擴(kuò)展。
可同時(shí)打印多張標(biāo)簽,完美解決中文打印問(wèn)題(有些打印機(jī)沒有中文字庫(kù)),方便快捷修改打印字體和大?。ㄖ形乃误w ,楷體,黑體,日文,韓文)。
本系統(tǒng)適用于工業(yè)商業(yè)活動(dòng)中,web端的條碼的生成及打印。

關(guān)鍵詞:

斑馬,條碼打印,zpl中文打印,客戶端打印,bs打印,web打印,asp.net,mvc,C#

提綱:

1.打印效果
2.項(xiàng)目結(jié)構(gòu)
3.關(guān)鍵代碼
4.總結(jié)

1.打印效果

直接上圖:


條碼效果.jpg

條碼效果.jpg
2.項(xiàng)目結(jié)構(gòu)

標(biāo)準(zhǔn)的MVC結(jié)構(gòu)
有條碼打印和zpl命令打印示例


image.png
3.關(guān)鍵代碼
客戶端socket通信.png
<script type="text/javascript">
    var ws = null;
    var commands = "";
    $(function () {
        if ("WebSocket" in window) {
            ws = new WebSocket("ws://localhost:45000");//打印服務(wù)的端口,打印前請(qǐng)開啟打印服務(wù)
            //open web socket
            ws.onopen = function () {
                // Web Socket is connected, send data using send()
            };
            ws.onmessage = function (evt) {
                var received_msg = evt.data;
                switch (true) {
                    case received_msg.indexOf("已連接") > 0:
                        var aa = received_msg;
                        break;
                    case received_msg.indexOf("已關(guān)閉") > 0:
                        var bb = received_msg;
                        break;
                    case received_msg.indexOf("已打印") > 0:
                        var cc = received_msg;
                        //SavePrintData();dosomething
                        break;
                    default:
                        alert("打印服務(wù)未開啟或打印機(jī)通訊中斷", -1);
                        break;
                }
            };
            ws.onclose = function () {
                alert("打印服務(wù)已關(guān)閉,請(qǐng)開啟打印服務(wù)并重新打開該頁(yè)面", -1);
                ws.close();
                ws = null;
                return;
            };
        }
        else {
            //不支持WebSocket
            alert("瀏覽器不支持WebSocket通訊", -1);
            return;
        }
    })
    $("#printZPL").click(function () {
        commands = $("#commands").val();
        if (commands.length != 0) {
            commands = "print_" + commands;
            if (ws != null) {
                //獲取到最終的打印命令,通過(guò)socket傳給window服務(wù)(專門的打印服務(wù),提供源碼,可修改,可自定義)
                ws.send(commands);
            }
            else {
                alert("未連接打印服務(wù)")
                return;
            }
        }
        else {
            alert("未輸入打印命令")
            return;
        }
    })
</script>
客戶端Windows服務(wù)監(jiān)聽socket通信.png

主要代碼:

 protected override void OnStart(string[] args)
        {
            try
            {
                printerName = DefaultPrinter();
                //Fleck .net socket框架
                var server = new WebSocketServer("ws://0.0.0.0:45000");//監(jiān)聽本地 45000端口
                server.Start(socket =>
                {
                    socket.OnOpen = () =>
                    {
                        socket.Send("socket通訊已連接");
                    };
                    socket.OnClose = () =>
                    {
                        socket.Send("socket通訊已關(guān)閉");
                        socket.Close();
                    };
                    socket.OnMessage = message =>
                    {
                        if (message.Contains("print_"))//打印命令前加了前綴
                        {
                            string zpl = message.Replace("print_", "");
                            Log("ZPL", zpl);//在D盤會(huì)生成打印日志
                            Print(zpl);//打印方法(該系統(tǒng)使用的是usb打印通訊,如果是網(wǎng)口打印機(jī),操作會(huì)更簡(jiǎn)單)
                            socket.Send("命令已打印");//打印完成,給客戶端發(fā)信息
                        }
                    };
                });
            }
            catch (Exception ex)
            {
                Log("開始異常", ex.Message);
            }
        }

        private static PrintDocument fPrintDocument = new PrintDocument();
        //獲取本機(jī)zpl打印機(jī)名稱
        public static String DefaultPrinter()
        {
            string name = "";          
            foreach (string installedPrinter in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
            {
                if (installedPrinter.Contains("ZPL"))
                {
                    name = installedPrinter;
                    break;
                }
            }
            return name;           
        }
        private void Print(string zpl)
        {
            try
            {
                RawPrinterHelper zpHelper = new RawPrinterHelper();
                var result = zpHelper.SendStringToPrinter(printerName, zpl);
            }
            catch (Exception ex)
            {
                Log("打印錯(cuò)誤異常信息", ex.Message);
            }
        }

客戶端安裝打印服務(wù):


客戶端安裝windows打印服務(wù).png

當(dāng)zpl命令傳送到打印機(jī)時(shí),查看打印機(jī)正在做什么,此時(shí)可以看到打印機(jī)里有打印命令,這時(shí)斑馬打印機(jī)應(yīng)該已經(jīng)打印出了標(biāo)簽。


zpl命令已經(jīng)傳送到打印機(jī).png
4.總結(jié)

項(xiàng)目源碼及開發(fā)請(qǐng)聯(lián)系qq:1596917093
項(xiàng)目源碼:(解壓密碼為 上面的QQ號(hào))
https://download.csdn.net/download/maxwell315/11143646

源碼結(jié)構(gòu)非常簡(jiǎn)單,可嵌入到客戶的系統(tǒng)中,該項(xiàng)目可以勝任簡(jiǎn)單的條碼生成及打印,復(fù)雜功能可以在此基礎(chǔ)上擴(kuò)展。本項(xiàng)目也算是提供了一套完整解決思路。
由于個(gè)人水平有限,難免會(huì)出現(xiàn)紕漏,歡迎指正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,996評(píng)論 25 709
  • 經(jīng)過(guò)多日的研究,經(jīng)過(guò)大量的測(cè)試,終于可以放心地說(shuō)這么一句: 在 iPhone、iPad 和 Mac 間同步。 作為...
    ITJason閱讀 185評(píng)論 0 0
  • 2017年9月25日 天氣:晴 這周英文學(xué)習(xí)碰到了瓶頸,進(jìn)展緩慢,幾乎和原地打轉(zhuǎn)差不多。屢屢拿不到4星,學(xué)...
    踐行哲閱讀 358評(píng)論 1 1

友情鏈接更多精彩內(nèi)容