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(, , , );

    pd.DefaultPageSettings.Margins = margin;

    ////纸张设置默认

    PaperSize pageSize = new PaperSize("First custom size", getYc(), );

    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());

    }

}

这里的代码主要是获取需要打印的内容,在实际运用中这里要改成动态的

private int getYc(double cm) 

{

    return (int)(cm / 25.4) * ;

}

public string GetPrintStr() 

{

    StringBuilder sb = new StringBuilder(); 

    string tou = "伊尹餐饮公司";

    string address = "深圳市罗湖区东门老街29号";

    string saleID = "";

    string item = "项目";

    decimal price = 25.00M;

    int count = ;

    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 = ; i < count; i++)

    {

        decimal xiaoji = (i+) * price;               

        sb.Append(item + (i+) + "/t/t" + (i+) + "/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();

}

打印效果如下:

C# 打印小票 POS的更多相关文章

  1. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  2. 【转】C#使用ESC指令控制POS打印机打印小票

    .前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的pos ...

  3. C#使用ESC指令控制POS打印机打印小票

    1.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的po ...

  4. ActiveXObject Word.Application 打印小票

    javascript 时间格式 Date.prototype.format = function (format) { var o = { "M+": this.getMonth( ...

  5. C# 收银机顾显(客显)及打印小票(58热敏打印机)

    最近做winform收银机,设计顾显及打印小票总结. 1.顾显(串口COM1) 只涉及到总计,所以只是简单的功能. public static ClientDisplayResult Display( ...

  6. 按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式

    按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式 之前写过一篇文章<按照已有的模板输出一(如发票)>,是关于如何给已有的模板赋值.在项目的实践过程 ...

  7. C# 网络打印机ESC指令打印小票

    public void SendSocketMsg(String ip, int port, int times, byte[] data) { try { byte[] mData; ) { mDa ...

  8. android端StarIO热敏打印机打印小票

    最近在做这个热敏打印机打印小票,开始的时候在网上找资料,发现国内基本没有这方面的资料,国外也很少,在此做个打印小票的记录. 这里只记录一些关键点. 使用StarIOPort.searchPrinter ...

  9. 手持扫描打印终端POS机应用商场零售批发移动销售开单

    无线开单系统,通过此无线开单系统,使用者可以进行日常的盘点.开单等作业.与进销存软件实时对接,可以提供给使用者即时.准确的库存数量.商品价格等信息.手持系统易上手.一次配置即可使用,极大的方便了使用者 ...

随机推荐

  1. 使用Java Service Wrapper在Linux下配置Tomcat应用

    前言 Java Service Wrapper是Tanuki Software的一个产品,可以将Java应用注册成Windows或Linux服务,使其可以随系统开机启动,同时可以监控Java应用的状态 ...

  2. .NET Framework 4.5、4.5.1 和 4.5.2 中的新增功能

    .NET Framework 4.5.4.5.1 和 4.5.2 中的新增功能 https://msdn.microsoft.com/zh-cn/library/ms171868.aspx

  3. Codeforces Beta Round #69 (Div. 1 Only) C. Beavermuncher-0xFF 树上贪心

    题目链接: http://codeforces.com/problemset/problem/77/C C. Beavermuncher-0xFF time limit per test:3 seco ...

  4. hdu 3046 Pleasant sheep and big big wolf 最小割

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3046 In ZJNU, there is a well-known prairie. And it a ...

  5. 跨平台base64数据传输注意问题

    今天用base64编码传输json串,android端那边始终看不到图片! 首先发现android端接收的json串长度不一致,仔细研究发现android端接收到的json数据里把服务器数据里的&qu ...

  6. javascript版Ajax请求

    什么是Ajax请求,Ajax也就是“Asynchronous JavaScript and XML”(异步JavaScript和XML),无刷新数据读取.能减少流量的消耗,也提高了浏览的流畅性,给用户 ...

  7. CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); pu ...

  8. Unity3D研究院之静态自动检查代码缺陷与隐患

    原地址:原地址:http://www.xuanyusong.com/archives/2828 代码缺陷和代码错误的最大区别是,代码缺陷不影响游戏编译,而代码错误编译都不通过.但是代码缺陷会影响游戏发 ...

  9. 为什么主流网站无法捕获 XSS 漏洞?

    二十多年来,跨站脚本(简称 XSS)漏洞一直是主流网站的心头之痛.为什么过了这么久,这些网站还是对此类漏洞束手无策呢? 对于最近 eBay 网站曝出的跨站脚本漏洞,你有什么想法?为什么会出现这样的漏网 ...

  10. PC端模拟手机浏览网页

    很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容. 谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器.在Windows的 ...