C# 打印小票 POS


C# 打印小票 POS

       最近在寫一個餐飲的收銀系統,以前從來沒有碰過打印機這玩意。感覺有些無從下手,在前面做報表時,總想找第三方的控件來用用,結果始終不行沒搞定、沒研究透,催得急沒辦法還是的動手自己寫個,哈...查了些相關的資料,感覺也不難,沒多久就搞定了。主要用到PrintDocument和PrintPreviewDialog兩個對象,一個用來打印,一個用來閱覽,如果在設置模板OK后,若果人流量比較多的話就直接打印不必在閱覽,這樣會快好多。

private void button2_Click(object sender, EventArgs e)
 
{
 
    //打印預覽            

    PrintPreviewDialog ppd = new PrintPreviewDialog();
 
    PrintDocument pd = new PrintDocument();
 
    

    //設置邊距
 
    Margins margin = new Margins(20, 20, 20, 20);
 
    pd.DefaultPageSettings.Margins = margin;
 
    

    ////紙張設置默認
 
    PaperSize pageSize = new PaperSize("First custom size", getYc(58), 600);
 
    pd.DefaultPageSettings.PaperSize = pageSize;
 
    

    //打印事件設置            

    pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
 
    ppd.Document = pd;
 
    ppd.ShowDialog();
 
    

    try
 
    {
 
        pd.Print();
 
    }
 
    catch (Exception ex)
 
    {
 
        MessageBox.Show(ex.Message, "打印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
        pd.PrintController.OnEndPrint(pd, new PrintEventArgs());
 
    }
 
}
View Code

這里的代碼主要是獲取需要打印的內容,在實際運用中這里要改成動態的

private int getYc(double cm) 

{
 
    return (int)(cm / 25.4) * 100;
 
}
 
 
 
public string GetPrintStr() 

{
 
    StringBuilder sb = new StringBuilder(); 

 
 
    string tou = "伊尹餐飲公司";
 
    string address = "深圳市羅湖區東門老街29號";
 
    string saleID = "2010930233330";
 
    string item = "項目";
 
    decimal price = 25.00M;
 
    int count = 5;
 
    decimal total = 0.00M;
 
    decimal fukuan = 500.00M;
 
    

    sb.Append("            " + tou + "     /n");
 
    sb.Append("-----------------------------------------------------------------/n");
 
    sb.Append("日期:" + DateTime.Now.ToShortDateString() + "  " + "單號:" + saleID + "/n");
 
    sb.Append("-----------------------------------------------------------------/n");
 
    sb.Append("項目" + "/t/t" + "數量" + "/t" + "單價" + "/t" + "小計" + "/n");
 
    for (int i = 0; i < count; i++)
 
    {
 
        decimal xiaoji = (i+1) * price;               

        sb.Append(item + (i+1) + "/t/t" + (i+1) + "/t" + price + "/t" + xiaoji);
 
        total += xiaoji;
 
 
 
        if (i != (count))
 
            sb.Append("/n");
 
    }
 
 
 
    sb.Append("-----------------------------------------------------------------/n");
 
    sb.Append("數量: " + count + " 合計:   " + total+"/n");
 
    sb.Append("付款: 現金" + "    " + fukuan);
 
    sb.Append("         現金找零:" + "   " + (fukuan - total) + "/n");
 
    sb.Append("-----------------------------------------------------------------/n");
 
    sb.Append("地址:" + address + "/n");
 
    sb.Append("電話:123456789   123456789/n");
 
   

    sb.Append("                 謝謝惠顧歡迎下次光臨                    ");
 
    return sb.ToString();
 
}
View Code

打印效果如下:

  

 


免責聲明!

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



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