1. 程式人生 > >更好的小票打印體驗,huanent.printer2.0發布

更好的小票打印體驗,huanent.printer2.0發布

小票打印 偏移量 就會 末尾 文字 切換 pos model 選擇

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發布