C#小票打印POS

12 篇文章 5 订阅
订阅专栏
11 篇文章 19 订阅
订阅专栏

源码地址:https://download.csdn.net/download/horseroll/10788400

打印效果图:

我把打印的参数基本都封装到一个类里面,直接调用即可,可打印文字也可打印图片

首先安装打印机驱动,然后在设备和打印机中将要用的打印机设为默认打印机,然后调用该方法即可

Pulic Void Print()
{
    PrintService ps = new PrintService();
    //ps.StartPrint("33333","txt");//打印文字
    ps.StartPrint(WriteTxt(),"txt");
    ps.StartPrint(Image.FromFile(Application.StartupPath+"\\2.jpeg"), "image");//打印图片
}

WriteTxt方法就是拼接要打印的字符串

public string WriteTxt()
{
    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 + "     \r\n");
    sb.Append("-----------------------------------------------------------------\r\n");
    sb.Append("日期:" + DateTime.Now.ToShortDateString() + "  " + "单号:" + saleID + "\r\n");
    sb.Append("-----------------------------------------------------------------\r\n");
    sb.Append("项目" + "\t\t" + "数量" + "\t" + "单价" + "\t" + "小计" + "\r\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("\r\n");
    }
    sb.Append("-----------------------------------------------------------------\r\n");
    sb.Append("数量: " + count + " 合计:   " + total + "\r\n");
    sb.Append("付款: 现金" + "    " + fukuan);
    sb.Append("         现金找零:" + "   " + (fukuan - total) + "\r\n");
    sb.Append("-----------------------------------------------------------------\r\n");
    sb.Append("地址:" + address + "\r\n");
    sb.Append("电话:123456789   123456789\r\n");
    sb.Append("                 谢谢惠顾欢迎下次光临                    ");
    return sb.ToString();
}

PrintService类源码,在这个类中可以改变是否打印弹窗确认,字体类型,大小,打印位置设置

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 小票打印
{
    public class PrintService
    {
        public PrintService()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
            this.docToPrint.PrintPage += new PrintPageEventHandler(docToPrint_PrintPage);
        }//将事件处理函数添加到PrintDocument的PrintPage中

        // Declare the PrintDocument object.
        private System.Drawing.Printing.PrintDocument docToPrint =
         new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例

        private string streamType;
        private string streamtxt;
        private Image streamima;

        // This method will set properties on the PrintDialog object and
        // then display the dialog.
        public void StartPrint(string txt, string streamType)
        {
            this.streamType = streamType;
            this.streamtxt = txt;
            // Allow the user to choose the page range he or she would
            // like to print.
            System.Windows.Forms.PrintDialog PrintDialog1 = new PrintDialog();//创建一个PrintDialog的实例。
            PrintDialog1.AllowSomePages = true;

            // Show the help button.
            PrintDialog1.ShowHelp = true;

            // Set the Document property to the PrintDocument for 
            // which the PrintPage Event has been handled. To display the
            // dialog, either this property or the PrinterSettings property 
            // must be set 
            PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例

            //DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框,如果不要注释即可,直接调用docToPrint.Print()
             If the result is OK then print the document.
            //if (result == DialogResult.OK)
            //{
            //    docToPrint.Print();//开始打印
            //}
            docToPrint.Print();//开始打印
        }
        public void StartPrint(Image ima, string streamType)
        {
            this.streamType = streamType;
            this.streamima = ima;
            // Allow the user to choose the page range he or she would
            // like to print.
            System.Windows.Forms.PrintDialog PrintDialog1 = new PrintDialog();//创建一个PrintDialog的实例。
            PrintDialog1.AllowSomePages = true;

            // Show the help button.
            PrintDialog1.ShowHelp = true;
            PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例

            DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框,如果不要注释即可,直接调用docToPrint.Print()
            // If the result is OK then print the document.
            if (result == DialogResult.OK)
            {
                docToPrint.Print();//开始打印
            }

            //docToPrint.Print();//开始打印
        }
        // The PrintDialog will print the document
        // by handling the document's PrintPage event.
        private void docToPrint_PrintPage(object sender,
         System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数
        {

            // Insert code to render the page here.
            // This code will be called when the control is drawn.

            // The following code will render a simple
            // message on the printed document
            switch (this.streamType)
            {
                case "txt":
                    string text = null;
                    System.Drawing.Font printFont = new System.Drawing.Font
                     ("Arial", 7, System.Drawing.FontStyle.Regular);//在这里设置打印字体以及大小

                    // Draw the content.

                    text = streamtxt;
                    //e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, e.MarginBounds.X, e.MarginBounds.Y);
                    e.Graphics.DrawString(text, printFont, System.Drawing.Brushes.Black, 0, 10);//设置打印初始位置
                    break;
                case "image":
                    System.Drawing.Image image = streamima;
                    int x = e.MarginBounds.X;
                    int y = e.MarginBounds.Y;
                    int width = image.Width;
                    int height = image.Height;
                    if ((width / e.MarginBounds.Width) > (height / e.MarginBounds.Height))
                    {
                        width = e.MarginBounds.Width;
                        height = image.Height * e.MarginBounds.Width / image.Width;
                    }
                    else
                    {
                        height = e.MarginBounds.Height;
                        width = image.Width * e.MarginBounds.Height / image.Height;
                    }
                    System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(x, y, width, height);
                    e.Graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, System.Drawing.GraphicsUnit.Pixel);
                    break;
                default:
                    break;
            }

        }
    }
}

 

C# usb 无驱动 POS打印 小票打印
08-14
C# usb 无驱动 POS打印 小票打印 visual studio 2012 绝对可以用
C#打印小票自带条形码打印
永远都不要忘记为谁而努力奋斗
04-09 6067
private void btnReceipts_Click(object sender, EventArgs e) { string sheet_no = this.dgvOrders.SelectedRows[0].Cells[0].Value.ToString(); jzPrint(sheet_no); }
C#开发 ActiveX 小票打印控件
hfrommane的博客
02-05 5386
C#开发ActiveX小票打印控件,去年帮朋友搞一个IE打印控件,在网上找了很多都不满足,要么是不能直接打印,要么是不能指定打印机,还有的是不能自定义样式。在网上折腾了一个周,还没搞定,于是想还不如自己开发一个吧。结果从现学C#到完成差不多只花了两周。过程中也遇到了很多坑,现在分享给大家,并且将项目在GitHub上开源。如果您觉得喜欢,给个Star,深表感谢。
C# ESCPOS 打印实例
08-24
C# ESCPOS 打印实例
C# 小票打印
10-29
C# 小票打印代码,支持市面上常用的小票打印机
自写C#小票打印程序,内含自动计算文本框打印和饭店打印模板
12-09
这个是我用C#语言写的小票打印源码。软件可以免费提供给你使用,如果需要源码,请点击:https://item.taobao.com/item.htm?spm=686.1000925.0.0.ms9CKE&id=542980085882。软件源码不可二次转卖给别人,否则后果自负!
C#打印小票(连续自动打印
技术分享博客
04-12 2441
注意前端需要引用(LodopFuncs.js,JsBarcode.all.min.js,jquery.js)当然还有安装打印机驱动还有Lodop的驱动 前端代码调用打印方法部分 json.printinfo是后端传向前端的生成好的打印代码。 //执行打印小票 var orderids = ""; if (json.printinf
c# 小票打印
weixin_30279671的博客
04-18 532
c# 在进行小票打印时大致有三种方法。 1. 使用水晶报表进行打印。可以参考:https://www.cnblogs.com/aitong/p/10717786.html 2. 在 PrintDocument 对象上进行绘图,然后使用其打印方法直接打印。 using CrystalDecisions.CrystalReports.Engine; using System; using...
c#小票打印
xyzvalue的专栏
06-29 2205
C#中使用PrintDialog可以很方便的实现程序的打印功能。 其步骤如下: 创建一个PrintDialog的实例。如下: System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 创建一个PrintDocument的实例.如下: System.Drawing.Printing.PrintDo
打印机打印小票代码(附工具类,接口讲解和源码)
北冥的博客
06-04 3183
废话不多说,直接上源码 1.工具类 PrintDeviceUtil package com.ncxp.easy.util; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Value; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * 设备打印工具类
C# 设置模版票据打印实例代码
12-07
C#打印票据代码 可实现动态设计模板,保存模板 ,加载模板等功能
C#小票打印demo
11-16
使用方法详见我的博客:https://blog.csdn.net/HorseRoll/article/details/84136088
C#使用ESC指令控制POS打印小票
06-03
C#使用ESC指令控制POS打印小票
Zebra斑马打印机编程C#--入门级别打印
热门推荐
马儿不吃草
05-29 2万+
该篇介绍了Zebra打印机打印中文+英文+图片的方法,如果是单单打印英文的话,可使用Zebra自带指令打印Zebra利用指令绘制出图像打印。还有一篇博客是介绍Zebra三种打印方式的利弊Zebra斑马打印机三种打印方式的利弊 打印机专栏:打印机程序开发(Zebra、TSC、Toshiba) 源码地址:https://download.csdn.net/download/horseroll/10...
Zebra斑马打印机指令编程进阶(语言通用)--利用指令绘制出图像打印
马儿不吃草
07-26 2万+
之前介绍过Zebra的入门打印,由于Zebra指令繁多,并且自带字体不能打印中文,如果打印内容中有中文的话,还是推荐大家先用Graphic类先画好自己想要的image,然后将整张图片进行打印。而且调试方便 我另一篇博客对此有详细介绍:https://blog.csdn.net/horseroll/article/details/80496091 还有另外一种方式,也就是用自带的指令进行绘制打印...
浅谈Zebra斑马打印机三种打印方式的利弊
马儿不吃草
08-31 1万+
经过几个项目的洗礼,对Zebra打印机有了一个初步的了解,也用了好几种方式进行通讯打印,下面我们来谈谈这几种方式的优缺点吧。 主要有以下三种方法: 1.利用ZPLII指令集编写带有位置信息,字体大小,打印内容等信息的指令,利用TCP/IP或者串口传输到打印机打印 2.利用Graphic类在自己程序中绘制出自己想要的打印效果图,然后用指令集中的DG指令将打印效果图整张通过TCP/IP或者串口传...
Zebra如何导入字体,使用字体,以及遇到的问题
马儿不吃草
09-04 1万+
关于Zebra导入字体,在该文中讲的很详细了   点击查看 下面主要讲讲期间遇到的问题 问题1.打印机重启后字体不能正常调用 解决:打印机重启之后,外部导入的字体编号就会消失,需要重新编号,所以每次调用打印机打印之前,重新给字体进行编号:^XA^CWM,E:TRI000.FNT^XZ。当然不编号也可以直接调用字体名字进行打印...
C#调用Bartender模板打印.Net的SDK
马儿不吃草
09-06 9241
前提条件: 安装Bartender打印软件,我用的是10.1,然后用注册机注册,注册后版本选择Enterprise Automation 注册机下载地址:https://download.csdn.net/download/horseroll/11687585 源码下载地址:https://download.csdn.net/download/horseroll/11687678 1.项目...
Zebra ZE500打印机常见问题指南
马儿不吃草
05-29 6736
在使用Zebra ZE500中遇到几个常见问题,进行记录 1.发送多条内容时会一次性打印,而不是信号触发一次打印一张 解决:在菜单中的“打印模式”从“撕下”改为“粘贴器”,然后把“粘贴器接口”由“无”改为“模式一” 2.每次开机通电或者盖上盖子时都会自动出几张纸,也可以通俗说开机自检,不希望开机自检 解决:菜单中的“介质已加电”从“校准”改成“无移动”,或者菜单中“打印头关闭操作”从“校准...
c# 打印小票
最新发布
06-01
以下是一个简单的 C# 打印小票的示例代码: ```csharp using System; using System.Drawing; using System.Drawing.Printing; class Program { static void Main(string[] args) { PrintDocument pd = new ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • RS232标准9针串口引脚定义 110233
  • winform程序打包EXE三种方式 30650
  • Zebra斑马打印机编程C#--入门级别打印 29922
  • Zebra斑马打印机指令编程进阶(语言通用)--利用指令绘制出图像打印 24886
  • winform利用CefSharp调用google浏览器内核ChromiumWebBrowser,与JS交互 21163

分类专栏

  • OpenCVSharp 1篇
  • C#图形绘制以及图像处理 10篇
  • 打印机程序开发(Zebra、TSC、Toshiba) 11篇
  • Android 1篇
  • SQL 1篇
  • .Net 33篇
  • 打印机 12篇
  • Graphics类 10篇
  • TCP、Serial通讯 10篇
  • OCR识别 3篇
  • 喷码机 3篇
  • RFID
  • Winform 18篇
  • 加密解密 3篇
  • 工作总结

最新评论

  • Zebra斑马打印机编程C#--入门级别打印

    小陈小陈 心想事成709: 怎样把这些码写到打印机中去

  • C#连接控制西门子PLC S7-200 Smart

    可惜不可惜: 大佬有没有网盘链接呢表情包

  • OpenCVSharp入门学习①-获取本地摄像头数据

    人工智能教学实践: 博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文, 同时也希望可以来我博客指导我一番!

  • Zebra斑马打印机编程C#--入门级别打印

    访问宇宙: 请问QT里面也可以这样打印图片吗?

  • RFID读写器Impinj R420开发C#

    Tu7mao: 请问我编写了读写的代码,并且加了开始和结束按钮,我发现启动的第一下监测标签返回的数量是正确的大概1秒30,但是每结束再重新connect开始一次后就会翻倍增加,关闭代码重新运行后第一次又会回到正常,请问有什么解决办法么

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • OpenCVSharp入门学习①-获取本地摄像头数据
  • C#缩放PDF文件
  • C#连接控制西门子PLC S7-200 Smart
2023年2篇
2022年1篇
2021年6篇
2020年10篇
2019年28篇
2018年52篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马儿不吃草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

代办银行转账回执单荆州制作银行定期存单上海ATM汇款转账小票曲靖银行定期存单哪家好太原跨行转账凭条打印泰州代办定期存单肇庆代开转账回执单南阳ATM转账回执单小票打印肇庆汇款凭证作用三亚银行柜台转账凭证价格常州定制银行定期存单济宁跨行转账凭条哪家比较好苏州跨行转账凭条定做曲靖ATM转账回执单小票服务商杭州手机银行转账凭证打印无锡定做手机银行转账凭证烟台转账回执单开具宁波回执单图片合肥ATM汇款转账小票代做绍兴手机银行转账凭证打印杭州汇款凭条哪家好咸阳代办银行定期存单厦门柜台转账汇款凭证办理郑州代做ATM汇款转账小票常德办银行柜台转账凭证衡阳银行汇款凭条哪家好淮安代办银行汇款凭条武汉办汇款凭证包头汇款回执单曲靖转账回执单哪家比较好武汉跨行转账凭条哪家好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代办银行转账回执单 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化