.net 調用小票打印機 打印票據


 public class PrintInvoice     {        

#region 01.獲得打印機1獲得吧台打印機2獲得后廚打印機       

  /// <summary>        

/// 獲得打印機1獲得吧台打印機2獲得后廚打印機     

    /// </summary>      

   public TcpClient GetPrint(int n = 1)      

   {       

      var client = new System.Net.Sockets.TcpClient();      

       var bll = new PrintAndPlaceBll();       

      var model = bll.GetModel(n);            

var port = Common.rtnInt32(model.PrintPort);//9100      

       var ipPrint = model.PrintIpAddress;//192.168.1.111      

       client.Connect(ipPrint, port);       

      return client;    

     }     

    #endregion

        #region 02.初始化一個網路訪問數據流     

    /// <summary>    

     /// 初始化一個網路訪問數據流    

     /// </summary>   

      /// <returns></returns>     

    public NetworkStream BuildStream()         {   

          System.Net.Sockets.NetworkStream stream = null;     

        return stream;      

   }        

#endregion

        #region 03.套接字和打印機通訊放回通訊流      

   /// <summary>     

    /// 套接字和打印機通訊放回通訊流      

   /// </summary>   

      /// <returns></returns>   

      public NetworkStream GetStream(TcpClient client, NetworkStream stream)     

    {

            byte[] chushihua = new byte[] { 27, 64 };//初始化打印機        

     byte[] ziti = new byte[] { 27, 77, 0 };//選擇字體n =0,1,48,49     

        byte[] zitidaxiao = new byte[] { 29, 33, 0 };//選擇字體大小      

       byte[] duiqifangshi = new byte[] { 27, 97, 1 };//選擇對齊方式0,48左對齊1,49中間對齊2,50右對齊     

        stream = client.GetStream();             //是否支持寫入         

    if (!stream.CanWrite)             {                 stream = null;             }       

      stream.Write(chushihua, 0, chushihua.Length);//初始化     

        stream.Write(ziti, 0, ziti.Length);//設置字體      

       stream.Write(zitidaxiao, 0, zitidaxiao.Length);//設置字體大小--關鍵     

        stream.Write(duiqifangshi, 0, duiqifangshi.Length);//居中      

       return stream;     

    }     

    #endregion

        #region 04.把要打印的文字寫入打印流

        /// <summary>      

   /// 把要打印的文字寫入打印流     

    /// </summary>     

    /// <param name="stream"></param>   

      /// <param name="output"></param>     

    public void PrintText(NetworkStream stream, string output)     

    {           

  Byte[] data = System.Text.Encoding.Default.GetBytes(output);        

     stream.Write(data, 0, data.Length);//輸出文字  

       }       

  #endregion

        #region 05.設置對齊方式0,48左對齊1,49中間對齊2,50右對齊   

      /// <summary>    

     /// 設置對齊方式0,48左對齊1,49中間對齊2,50右對齊     

    /// </summary>      

   /// <param name="stream"></param>   

      /// <param name="n"></param>    

     public void SetDuiQi(NetworkStream stream, byte n)      

   {        

     byte[] duiqifangshi = new byte[] { 27, 97, 1 };//選擇對齊方式0,48左對齊1,49中間對齊2,50右對齊    

         stream.Write(duiqifangshi, 0, duiqifangshi.Length);    

     }        

#endregion

        #region 06.設置字體n =0,1,48,49       

  /// <summary>     

    /// 設置字體n =0,1,48,49      

   /// </summary>     

    /// <param name="stream"></param>     

    /// <param name="n"></param>    

     public void SetFont(NetworkStream stream, byte n)      

   {      

       byte[] ziti = new byte[] { 27, 77, 0 };//選擇字體n =0,1,48,49    

         stream.Write(ziti, 0, ziti.Length);      

   }      

   #endregion

        #region 07.設置加粗1加粗0還原    

     /// <summary>        

/// 設置加粗1加粗0還原      

   /// </summary>    

     /// <param name="stream"></param>     

    /// <param name="n"></param>     

    public void SetBold(NetworkStream stream, byte n)  

       {           

  byte[] jiacu = new byte[] { 27, 69, n };//選擇加粗模式    

         stream.Write(jiacu, 0, jiacu.Length);   

      }    

     #endregion

        #region 08.設置字體大小0最小1,2,3     

    /// <summary>

        /// 設置字體大小0最小1,2,3     

    /// </summary>     

    /// <param name="stream"></param>      

   /// <param name="n"></param>    

     public void SetFontSize(NetworkStream stream, byte n)       

  {        

     byte[] zitidaxiao = new byte[] { 29, 33, n };//選擇字體大小   

          stream.Write(zitidaxiao, 0, zitidaxiao.Length);    

     }      

   #endregion

        #region 09.切紙

        /// <summary>    

     /// 切紙    

     /// </summary>   

      /// <param name="stream"></param>  

       /// <param name="n"></param>   

      public void QieZhi(NetworkStream stream)     

    {         

    byte[] qiezhi = new byte[] { 29, 86, 1, 49 };//切紙   

          stream.Write(qiezhi, 0, qiezhi.Length);    

     }       

  #endregion

        #region 10.釋放資源   

      /// <summary>    

     /// 釋放資源    

     /// </summary>      

   /// <param name="client"></param>    

     /// <param name="stream"></param>    

     public void DiposeStreamClient(TcpClient client, NetworkStream stream)     

    {         

    if (stream != null)    

         {     

            stream.Close();      

           stream.Dispose();     

        }         

    if (client != null) client.Close();     

    }       

  #endregion

        #region 11.樣例展示   

      private void Printeg()   

      {         

    var p = new PrintInvoice();       

      var batai = p.GetPrint();//獲得吧台打印機    

         var liunull = p.BuildStream();//初始化一個網絡訪問數據流  

           try       

      {           

      var liu = p.GetStream(batai, liunull);//獲得通訊打印流  

               p.SetFontSize(liu, 2);//字體變大         

        p.SetBold(liu, 1);//加粗       

          p.PrintText(liu, "\n結賬單\n\n");//打印文字   

              p.SetBold(liu, 0);//取消加粗             

    p.SetFontSize(liu, 0);//字體還原

                p.PrintText(liu, "北京西城                  ");//打印文字        

         p.PrintText(liu, "\n----------------------------------------------\n");//打印文字     

            p.PrintText(liu, "賬單號:1405220015       消費方式:普通消費\n");//打印文字        

         p.PrintText(liu, "時間:14-06-06 08:58   人數:4     桌號:11");//打印文字      

           p.PrintText(liu, "\n----------------------------------------------\n");//打印文字   

              p.SetFontSize(liu, 1);//字體變大        

         p.SetBold(liu, 1);//加粗        

         p.PrintText(liu, "品項名稱      數量     單價      金額");//打印文字         

        p.SetBold(liu, 0);//取消加粗                 p.SetFontSize(liu, 0);//字體還原       

          p.PrintText(liu, "\n----------------------------------------------\n");//打印文字

                p.PrintText(liu, "木須肉         2        16        32\n");//打印文字       

          p.PrintText(liu, "宮保雞丁       1        20        20\n");//打印文字

                p.PrintText(liu, "----------------------------------------------\n");//打印文字   

              p.SetFontSize(liu, 1);//字體變大                 p.SetBold(liu, 1);//加粗      

           p.PrintText(liu, "                              小計:52.00");//打印文字     

            p.SetBold(liu, 0);//取消加粗       

          p.SetFontSize(liu, 0);//字體還原        

         p.PrintText(liu, "\n----------------------------------------------\n");//打印文字

                p.PrintText(liu, "\n折扣:4         現金:100         找零:44\n\n");//打印文字

                p.SetFontSize(liu, 1);//字體變大                 p.SetBold(liu, 1);//加粗  

               p.PrintText(liu, "                              實際結算:¥48");//打印文字   

              p.SetBold(liu, 0);//取消加粗                 p.SetFontSize(liu, 0);//字體還原    

             p.PrintText(liu, "\n----------------------------------------------\n");//打印文字

                p.PrintText(liu, "收銀員:張三                                 \n");//打印文字      

           p.PrintText(liu, "服務員:李四                                 \n");//打印文字     

            p.PrintText(liu, "\n客人簽字:________________                   \n");//打印文字

                p.PrintText(liu, "\n==============================================\n");//打印文字      

           p.PrintText(liu, "xx餐廳祝您用餐愉快!");//打印文字                 p.PrintText(liu, "\n餐廳電話:4000000 ");//打印文字     

            p.PrintText(liu, "\n==============================================\n");//打印文字  

               p.PrintText(liu, "\n\n\n\n\n\n\n\n");//打印文字    

             p.QieZhi(liu);//切紙        

     }             catch       

      {               

  //打印機缺紙或者紙匣打開時,不會出現異常,不用特殊代碼判斷,數據不會丟失.     

        }           

  finally             {   

              p.DiposeStreamClient(batai, liunull);//釋放資源       

      }      

   }        

#endregion

    }


免責聲明!

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



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