c# asp.net mvc使用斑馬GK888t打印機打印標簽


前言

c#語言,asp.net mvc,南京都昌電子病歷模板工具(類似word),斑馬GK888t,打印手腕帶和標簽紙。

實現步驟為:在頁面上顯示一個或多個都昌模板工具,點擊頁面上的button,出現都昌控件的預覽界面,然后在預覽界面上點擊打印,打印到手腕帶紙或者標簽紙上。

簡述

安裝打印機驅動(不是很理解,如有錯誤,歡迎大家賜教)

  • 從網上下載了GK888t的打印機驅動,並完成安裝。(或者不需要安裝,有電的打印機通過usb連上電腦后,電腦會自動識別安裝)
  • 在控制面板\硬件和聲音\設備和打印機,右鍵選擇添加打印機,端口就直接默認吧(不知道為什么,但就是這樣做了),選擇的打印機驅動必須是ZDesiger Gk888t。添加完成后,設置為默認打印機
    image

打印設置的注意事項

  • 首先明確,打印首選項的大小設置打印內容的大小設置要與實物紙張大小一致
  • 設置打印首選項,大小設置成實際的紙張大小,單位是看標簽格式中選了哪一項
    image

像手腕帶這樣,紙張上只有部分是打印區域,首選項中設置的大小還是設置成整條紙的大小,不需要打印的紙對應打印內容的空白區域。

  • 在高級設置中,對於GK888t這個打印機,不管打印是否使用了碳帶,標簽紙張類型都選 熱敏(用碳帶打印,曾勾選了熱轉印,但是只能打一次,這次打完后打印機的feed鍵就變紅),跟蹤模式看紙張是否是連續的,連續紙選擇連續,間隔紙選擇Web檢測,標記感應不清楚。操作模式選擇了撕紙

    image
    image
    image

打印時遇到的問題

  • 紅框是紙張中需要打印的區域,期望打印出來的效果如黃框所示,但是實際打印結果卻是綠框這樣。

    image
    • 嘗試:將打印首選項中標簽格式中的縱向改為橫向,但是問題沒解決。
    • 解決:后來發現都昌的模板工具中,有頁面打印設置這一選項,橫縱向改變后(同時長寬也要各自調換),實際打印結果就能如黃框一般
    • 擴展1:如果使用類似word的富文本編輯器在頁面上打印時,遇到上述問題,可以考慮更改編輯器中的打印選項。
    • 擴展2:如果沒用富文本編輯器,直接寫html,用window.print()打印時,遇到上述問題,將打印首選項中標簽格式中的縱向改為橫向,即可解決問題。
  • 一次打印多個,打印內容越打越后面,不在正確位置
    • 先確保滿足了打印內容大小,打印首選項大小以及實物紙張大小 三者一致。
    • 檢查打印機滾輪以及打印鋼片(不知道怎么稱呼)那邊是否有污垢,會造成阻力,需要清理掉。
    • 實物紙張得是新的,不能重復使用,因為已經打印上的內容在滾輪滾動時會出現阻力。
    • 然后就是 尺子在手,天下我有。量出每次打印的偏移量,估求出平均值,改變打印內容的大小和打印首選項中大小的長度。
    • 我的經驗就是以上四步,歡迎討論指教。
  • 接上問題,原本調整好了打印也沒有偏移,之后調整了打印機(取換了碳帶,重新放了一卷打印紙),再打印,發現位置又偏了!
    • 說實話,超絕望~,變動一次調一次位置,這阻力變動的也太快了吧,可用性太低了
    • 解決:把打印首選項中的跟蹤模式換了,從連續改為標記感應,偏移沒有了(紙張用的是愛德手腕帶,是連續紙也是標記紙)
    • 總結:遇到這種情況,可以嘗試更改一下跟蹤模式

補充(window.print()打印標簽,源碼以及一些經驗疑惑)

ie瀏覽器要允許運行腳本或者ActiveX控件

  • 經驗與疑惑
    • 本經驗分享討論前提:不使用其他插件,就只用jq。當然也可以使用類似lodop,添加一個object來實現,這種情況不討論。
    • 將每塊內容打印到每張貼紙上,需在每塊內容上添加page-break-after:always;樣式。[可搜索源碼內容查看具體使用]
    • 曾嘗試設置@page的css代碼來控制打印的頁面大小,但無效
    • 判斷修改是否有效:選擇xps document writer 打印機,保存為xps文件,打開,看頁面邊距,看是不是一張一張。
    • 如果是用瀏覽器的預覽判斷修改是否有效,可能這還涉及到瀏覽器的打印設置。
    • 后來發現,關於頁面尺寸,xps打印機沒有打印首選項,那就設置斑馬打印機的首選項(紅框紅圈),點擊應用后,再選回xps打印機(綠框綠圈),點擊應用后,點擊打印。頁面尺寸就能按照首選項設定的大小來。
      image
    • 我實驗下來,只要設置好了每塊內容的長和寬(單位需要是cm或者英寸,不能用px),打印首選項的大小(並且生效了),以及加上了page-break-after,就能保證每塊內容打印在特定大小的紙上。
  • 源碼
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>標簽打印</title>
	<meta charset="utf-8" />
	<!-- <script type="text/javascript" src="./jquery-1.7.2-min.js"></script>  -->
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
    <script type="text/javascript">
        $(function () {  
            //alert("1");
            $.each($(".singleInfo .singleInfoRight"), function (k, v) {
                if (k >= 0) {
                    var $checkbox = $(v).find("input[type='checkbox']"); 
                        $checkbox.prop("checked", "true");
                     
                }
            })
 

            //if (getExplorer() == "IE") { 
                pagesetup_null(); //刪除打印頁面的頁眉頁腳
            //}
 
        }) 
        
        //選中所有復選框
        function CheckAll(e) {
            var isAll = $(e).is(':checked');
            $.each($(".singleInfo .singleInfoRight"), function (k, v) {
                if (k >= 0) { 
                    var $checkbox = $(v).find("input[type='checkbox']");
                    if (isAll) {
                        $checkbox.prop("checked", "true");
                    }
                    else {
                        $checkbox.removeAttr("checked");
                    }
                }
            })
        }

        //單個復選框點擊事件
        function singleCheckboxClick(e) {
            var ischecked = $(e).is(':checked');
            if (!ischecked) {
                $("#totalcheckbox").removeAttr("checked");
            }
        }

        //打印
        function labelPrint() {
            var printhtml = "";
            var codelist = [];
            $(".singleInfoRight>input:checked").each(function (i, item) {
                var content = $(this).parent().prev(); 
                codelist.push($(this).parent().parent().attr("code")); 
                printhtml = printhtml + content.prop("outerHTML"); 
            })
            if (printhtml == "") {
                window.external.MessageShow(0, "請先選中需要打印的標簽");
                return false;
            }   
			var bodyHtml = document.body.innerHTML;
			document.body.innerHTML = printhtml;
			window.print();
			document.body.innerHTML = bodyHtml; 
              
            
        }
         
        //獲取當前瀏覽器
        function getExplorer() {
            var explorer = window.navigator.userAgent;
            //ie
            if (explorer.indexOf("MSIE") >= 0) {
                return "IE";
            }
                //firefox
            else if (explorer.indexOf("Firefox") >= 0) {
                return "Firefox";
            }
                //Chrome
            else if (explorer.indexOf("Chrome") >= 0) {
                return "Chrome";
            }
                //Opera
            else if (explorer.indexOf("Opera") >= 0) {
                return "Opera";
            }
                //Safari
            else if (explorer.indexOf("Safari") >= 0) {
                return "Safari";
            }
        }

        //刪除打印頁面的頁眉頁腳
        function pagesetup_null() {
           // alert("1");
            var hkey_root, hkey_path, hkey_key;
            hkey_root = "HKEY_CURRENT_USER";
            hkey_path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
            try {
                var RegWsh = new ActiveXObject("WScript.Shell");
                hkey_key = "header";
                RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
                hkey_key = "footer";
                RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
                hkey_key = "margin_left";
                RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "0");
                //RegWsh.sendKeys('%fu');
            } catch (e) {

            }
        } 
    </script>
    <style type="text/css">
        @media screen{ 
            #allcontent{
                height:670px;
                width:62%;
                display:block;
                margin-top:10px;
                margin-left:10px;
                /*overflow-y:scroll;*/
            }
            .singleInfo{
                width: 300px;
                box-shadow: 4px 4px 4px 4px rgba(0,0,0,0.16);
                -webkit-border-radius: 3px;
                font-family:"微軟雅黑";
                -moz-border-radius: 3px;
                border-radius: 3px; 
                height:204px;
                background-color:rgba(255, 255, 255, 1);
                float:left;
                margin-right:20px;
                margin-bottom:20px;
            } 
            .singleInfoLeft{
                width:95%;
                float:left;
                font-size:13px;
                /*width:7cm;
                height:5.5cm;
                page-break-after:always;*/
            }
            .singleInfoRight{
                width:5%;
                float:left;
            } 
              .allDrug{
                width:70%;
                height:120px;
                border:1px solid;
                float:left;
            }
        }

        @media print{
            /*@page{
                size:A4 portrait;
                margin-left:0;
            }*/
          .singleInfoLeft{  
                font-size:15px;
                width:8cm;
                height:6cm;
                display:block;/*page-break-after:always;*/ 
                background-color:white;
            } 
            .singleInfoLeft:not(:last-of-type) {
                page-break-after:always;
            }
            .allDrug{
                width:70%;
                height:3.5cm;
                border:1px solid;
                float:left;
            }
        } 

        .allDrug>div{
            margin-left:5px;
            margin-top:5px;
        }

        .brname{
            font-weight:bold;
            font-size:19px;
        }
         
        .qrcode{
            width:25%; 
			float:left;
			background-color:black;
        }
        
        .yyewmblock{
            overflow:hidden;
        } 
        .pysj,.hsname{ 
            display:inline-block;
            width:85px;
            height:15px;
            border-bottom:solid 1px;
        } 

        .singleDrug{
            font-size:13px;
        }
    </style>
</head>
<body>   
 <input id="totalcheckbox" type="checkbox" onclick="CheckAll(this)" />全選
 <input type="button" value="打印" onclick="labelPrint()" />
    <div id="allcontent">  
        <div class="singleInfo">
            <div class="singleInfoLeft" media="print">
                <div>
                    <span class="brname">紅蘿卜</span>
                    <span class="zyh">00044383</span>
                    <span class="xb">男</span>
                    <span class="ch">C1001</span>
                    <span class="bq">夢想家園</span>
                </div>
                <div class="yyewmblock">
                    <div class="allDrug">
                        <div class="singleDrug">
                            <div>
                                <span class="drugname">精煉食鹽</span>&nbsp;&nbsp;<span class="druggg">250ml</span>
                            </div>
                            <div>
                                檢測結果(合格) &nbsp;&nbsp; 批次:<span class="psph">18.10.31</span>
                            </div>
                        </div>
                    </div>
                    <div class="qrcode">
                    </div>
                </div>
                <div>
                    <span class="syfs">食品添加</span>&nbsp;&nbsp;<span class="pl">一天不可超過200mg</span>
                </div>
                <div>
                    <span class="sczxdsj">2018-08-10 16:50:12</span>
                </div>
                <div class="singlelastdiv">
                    <span>購買時間:</span><span class="gmsj">2018-10-31</span>
                    <span>購買人:</span><span class="gmr">紅參</span>
                </div>
            </div>
            <div class="singleInfoRight"><input type="checkbox" onclick="singleCheckboxClick(this)"/></div>
        </div>
          <div class="singleInfo">
            <div class="singleInfoLeft" media="print">
                <div>
                    <span class="brname">紅蘿卜</span>
                    <span class="zyh">00044383</span>
                    <span class="xb">男</span>
                    <span class="ch">C1001</span>
                    <span class="bq">夢想家園</span>
                </div>
                <div class="yyewmblock">
                    <div class="allDrug">
                        <div class="singleDrug">
                            <div>
                                <span class="drugname">精煉食鹽</span>&nbsp;&nbsp;<span class="druggg">250ml</span>
                            </div>
                            <div>
                                檢測結果(合格) &nbsp;&nbsp; 批次:<span class="psph">18.10.31</span>
                            </div>
                        </div>
                    </div>
                    <div class="qrcode">
                    </div>
                </div>
                <div>
                    <span class="syfs">食品添加</span>&nbsp;&nbsp;<span class="pl">一天不可超過200mg</span>
                </div>
                <div>
                    <span class="sczxdsj">2018-08-10 16:50:12</span>
                </div>
                <div class="singlelastdiv">
                    <span>購買時間:</span><span class="gmsj">2018-10-31</span>
                    <span>購買人:</span><span class="gmr">紅參</span>
                </div>
            </div>
            <div class="singleInfoRight"><input type="checkbox" onclick="singleCheckboxClick(this)"/></div>
        </div>
    </div>  
</body>
</html> 


免責聲明!

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



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