• .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, " 结账单 ");//打印文字   

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

        p.SetFontSize(liu, 0);//字体还原

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

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

                p.PrintText(liu, "账单号:1405220015       消费方式:普通消费 ");//打印文字        

             p.PrintText(liu, "时间:14-06-06 08:58   人数:4     桌号:11");//打印文字      

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

                  p.SetFontSize(liu, 1);//字体变大        

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

             p.PrintText(liu, "品项名称      数量     单价      金额");//打印文字         

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

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

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

              p.PrintText(liu, "宫保鸡丁       1        20        20 ");//打印文字

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

                  p.SetFontSize(liu, 1);//字体变大                 p.SetBold(liu, 1);//加粗      

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

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

              p.SetFontSize(liu, 0);//字体还原        

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

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

                    p.SetFontSize(liu, 1);//字体变大                 p.SetBold(liu, 1);//加粗  

                   p.PrintText(liu, "                              实际结算:¥48");//打印文字   

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

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

                    p.PrintText(liu, "收银员:张三                                 ");//打印文字      

               p.PrintText(liu, "服务员:李四                                 ");//打印文字     

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

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

               p.PrintText(liu, "xx餐厅祝您用餐愉快!");//打印文字                 p.PrintText(liu, " 餐厅电话:4000000 ");//打印文字     

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

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

                 p.QieZhi(liu);//切纸        

         }             catch       

          {               

      //打印机缺纸或者纸匣打开时,不会出现异常,不用特殊代码判断,数据不会丢失.     

            }           

      finally             {   

                  p.DiposeStreamClient(batai, liunull);//释放资源       

          }      

       }        

    #endregion

        }

  • 相关阅读:
    2017免费获取正版win10的方法
    Apache <Directory>… </Directory>配置
    针对left join以及limit的两条优化小技巧
    win10打印机突然无法启动
    mysql中的分组统计函数及其用法实例
    程序猿的日常生活-雨中
    java中的反射
    mysql中的截取函数及其实例
    集合与数组
    方法重写
  • 原文地址:https://www.cnblogs.com/jimmychow/p/3772515.html
Copyright © 2020-2023  润新知