huanent.printer2.0是一個專註消費小票列印的類庫。擁有許多先進的特性例如居中列印、自動換行等特性,可以通過簡潔的代碼來列印出複雜的消費小票。huanent.printer通過MIT方式授權,可隨意用於商業用途,只要註明作者即可。 你可以通過github獲取源碼與提交bug:https ...
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後會在小票機真實列印出單據,並清除緩衝區。所以在票據代碼的末尾調用即可。