This is a Golang package that provides ESC-POS library functions to help with sending control codes to a ESC-POS thermal printer.
It was largely inspired by seer-robotics/escpos but is a complete rewrite.
It implements the protocol described in this Command Manual
Install the package via the following:
go get -u github.com/hennedo/escpos
The escpos package can be used as the following:
package main
import (
"github.com/hennedo/escpos"
"net"
)
func main() {
socket, err := net.Dial("tcp", "192.168.8.40:9100")
if err != nil {
println(err.Error())
}
defer socket.Close()
p := escpos.New(socket)
p.SetConfig(escpos.ConfigEpsonTMT20II)
p.Bold(true).Size(2, 2).Write("Hello World")
p.LineFeed()
p.Bold(false).Underline(2).Justify(escpos.JustifyCenter).Write("this is underlined")
p.LineFeed()
p.QRCode("https://github.com/hennedo/escpos", true, 10, escpos.QRCodeErrorCorrectionLevelH)
// You need to use either p.Print() or p.PrintAndCut() at the end to send the data to the printer.
p.PrintAndCut()
}
As the library sets all the styling parameters again for each call of Write, you might run into compatibility issues. Therefore it is possible to deactivate features. To do so, use a predefined config (available for all printers listed under Compatibility) right after the escpos.New call
p := escpos.New(socket)
p.SetConfig(escpos.ConfigEpsonTMT20II) // predefined config for the Epson TM-T20II
// or for example
p.SetConfig(escpos.PrinterConfig(DisableUnderline: true))
This is a (not complete) list of supported and tested devices.
Manufacturer | Model | Styling | Barcodes | QR Codes | Images |
---|---|---|---|---|---|
Epson | TM-T20II | ✅ | ✅ | ✅ | ✅ |
Epson | TM-T88II | ☑️ UpsideDown Printing not supported |
✅ | ✅ |