huanent.printer2.0是一个专注消费小票打印的类库。拥有许多先进的特性例如居中打印、自动换行等特性,可以通过简洁的代码来打印出复杂的消费小票。huanent.printer通过MIT方式授权,可随意用于商业用途,只要注明作者即可。

你可以通过github获取源码与提交bug:https://github.com/huanent/Huanent.Printer

huanent.printer已上传至nuget,可在nuget直接搜索名称huanent.printer安装

下面三幅图是使用huanent.printer打印的80,76,58宽度的小票,不同宽度的小票只需切换一个属性值即可自动适应,标题绝对剧中,商品名称过长自动换行,分割线长度自适应。

huanent.printer的使用也非常简单,首先获得电脑上所有打印机的名称列表

var printers = PrintQueueHelper.GetPrintQueueName();

从printers选择你的小票打印机名称,并使用此名称获得一个IPrinter打印对象

var printer = PrinterFactory.GetPrinter("xp80mm", PaperWidth.Paper80mm);
GetPrinter的第二个参数可以传入一个PaperWidth的枚举,预定义80,76,58三种宽度,也可以传入一个自定义的int值。
IPrinter对象有5个方法分别是:
  • PrintText
  • PrintImage
  • PrintLine
  • NewRow
  • Finish

PrintText方法

PrintText方法可以灵活地指定文字的打印方式例如文字的剧中方式,可进行左,中,右对齐(必须调用Finish()方法打印机才会开始打印!)
printer.PrintText("你好",stringAlignment:StringAlignment.Center);
printer.PrintText("你好2", stringAlignment: StringAlignment.Far);
printer.Finish();

可以指定文字的最大宽度,如果超出宽度就会自动换行,width的取值范围为0到1,0.3代表纸张的百分之30宽度

printer.PrintText("一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十",width:0.3f);
printer.Finish();

指定偏移量

printer.PrintText("一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十",width:0.3f,offset:0.2f);
printer.Finish();

指定字体大小(要还行需要显示调用NewRow()方法)

printer.PrintText("正", Printer.Models.FontSize.Huge);
printer.NewRow();
printer.PrintText("正");
printer.NewRow();
printer.PrintText("正",Printer.Models.FontSize.micro);
printer.NewRow();
printer.Finish();

PrintImage方法

打印一张图片,图片也支持对齐方式

printer.PrintImage(new Bitmap("qr.png"),StringAlignment.Far);
printer.Finish();

PrintLine方法

PrintLine打印一条线条,如果需要在小票打印分割线建议使用此方法,而不是使用PrintText。因为PrintLine可以做到不同纸张的线条宽度自适应不会引起线条换行

printer.PrintLine();
printer.Finish();

NewRow方法

调用NewRow方法会引起换行,即使是一个PrintText中有多行,也可智能换行。

printer.PrintText("一二三四五六七八", width: 0.3f);
printer.PrintText("一二三四五六七八", width: 0.2f, offset: 0.4f);
printer.NewRow();
printer.PrintText("我是新的行");
printer.NewRow();
printer.Finish();

Finish方法

Finish方法很简单,以上的所有方法调用后都在缓冲区,调用Finish后会在小票机真实打印出单据,并清除缓冲区。所以在票据代码的末尾调用即可。

更好的小票打印体验,huanent.printer2.0发布的更多相关文章

  1. linux下使用小票打印

    linux下使用小票打印 打印机: Xprinter XP-58IIH指令支持: ESC/POS接口: USB, 蓝牙 Linux系统: Centos7 蓝牙配对很快, 配对好后就是连接状态. 但很快 ...

  2. 重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印

    重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印 一.引言 桌面端系统经常需要对接各种硬件设备,比如扫描器.读卡器.打印机等. 这里介绍下桌面端 ...

  3. Android 小票打印USB

    第一步USB通信: Usb设备有两种,Host与Accessory 简单来说是主模式与从模式,主模式则android设备给外设供电,反之,外设给android设备充电,对于小票打印,使用的是Host模 ...

  4. 关于一体机打印新加菜按钮更改为下单小票打印设置FAQ(适用正餐6.0.1.0+,轻餐4.0.6.2+)

    适用版本:正餐6.0.1.0+,轻餐4.0.6.2+ 实际场景:更新后小票设置中的打印新加菜按钮更换为下单小票打印设置,更换后,设置中,有3个选项: 1.仅打印新加菜    (选中后,订单加菜后前台小 ...

  5. Delphi 10 Seattle 小票打印控件TQ_Printer

    TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用). TQ_Printrer控件让 ...

  6. c# 小票打印

    c# 在进行小票打印时大致有三种方法. 1. 使用水晶报表进行打印.可以参考:https://www.cnblogs.com/aitong/p/10717786.html 2. 在 PrintDocu ...

  7. Android打印机--小票打印格式及模板设置

    小票打印就是向打印设备发送控制打印格式的指令集,而这些打印格式须要去查询相应打印机的API文档,这里我把经常使用的api给封装了一下 文字对齐方式 打印字体大小 字体是否加粗 打印二维码 打印条形码 ...

  8. Atitit.收银机小票打印功能的设计  java php c#.net版本

    Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...

  9. 火球-UML大战需求分析(体验版3.0.2).pdf

    火球-UML大战需求分析(体验版3.0.2).pdf http://files.cnblogs.com/files/happlyonline/%E7%81%AB%E7%90%83-UML%E5%A4% ...

随机推荐

  1. (翻译)使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用

    本文翻译自Scott Hanselman博客: https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithThe ...

  2. HAUT 1261地狱飞龙 自适应辛普森 数值积分

    1261: 地狱飞龙 时间限制: 1 秒  内存限制: 64 MB 提交: 300  解决: 68 题目描述 最近clover迷上了皇室战争,他抽到了一种地狱飞龙,很开心.假设地域飞龙会对距离为d的敌 ...

  3. 调试和运行matlab代码(源程序)的技巧和教程

    转载请标明出处:专注matlab代码下载的网站http://www.downma.com/ 本文主要给大家分享使用matlab编写代码,完成课程设计.毕业设计或者研究项目时,matlab调试程序的技巧 ...

  4. Unix:关于一个file在file system和disk中占用空间

    參考文献: Harley Hahns:Guide to Unix and Linux. Chap 24 -->首先要有的关键概念:the amount of "disk space&q ...

  5. iOS_应用程序的生命周期

    每个iPhone程序都包括唯一一个UIApplication对象,它管理整个程序的生命周期,从载入第一个显示界面開始,而且监听系统事件.程序事件调度整个程序的运行. int main(int argc ...

  6. freemarker四种变量

    freemarker四种变量 1.简单介绍说明 (1)数据模型中的变量:root中的变量 (2)模板中的变量:使用<#assign>定义的变量 (3)局部变量:在指令中的变量 (4)循环变 ...

  7. Xcode6 UIWebView与JavaScript交互(issue fix)

    这篇文章中,有介绍UIWebView与JavaScript交互,在UIWebView截获JavaScript请求处理.从app的角度,这是JavaScript的Hook请求. 在Xcode6之前的Ap ...

  8. Android View动画效果—透明效果,旋转效果(二)

    一:动画效果 方法一:动画效果用AlphaAnimation类.直接加入 AlphaAnimation aa = new AlphaAnimation(0,1); //设置透明度 aa.setDura ...

  9. 大数据学习(7)Hadoop高可用

    HDFS高可用 通过主从切换实现单NameNode高可用.通过Federation:水平扩展来联合多NameNode个: NameNode高可用 把edits日志从原来的nameNode中分离出来,存 ...

  10. 「mysql优化专题」这大概是一篇最好的mysql优化入门文章(1)

    优化,一直是面试最常问的一个问题.因为从优化的角度,优化的思路,完全可以看出一个人的技术积累.那么,关于系统优化,假设这么个场景,用户反映系统太卡(其实就是高并发),那么我们怎么优化? 如果请求过多, ...