package main import ( "fmt" "image" _ "image/gif" _ "image/jpeg" _ "image/png" "log" "os" _ "github.com/jbuchbinder/gopnm" _ "golang.org/x/image/webp" "github.com/lestrrat-go/dither" "github.com/nfnt/resize" "git.sr.ht/~guacamolie/faxmachine/escpos" "git.sr.ht/~guacamolie/faxmachine/escpos/protocol" ) func main() { p, err := escpos.StartUSBPrinter(os.Args[1], protocol.TMT88IV, escpos.FlagNone) if err != nil { log.Fatalf("failed to start printer: %v\n", err) } defer p.Close() if err := p.EnableASB(protocol.ASBReportAll); err != nil { log.Fatalf("failed to enable ASB: %v\n", err) } go func() { for status := range p.ASBStatus() { log.Printf("received ASB status: %#v\n", status) } }() img, _, err := image.Decode(os.Stdin) if err != nil { log.Fatalf("failed to get decode image: %v\n", err) } img = resize.Resize(512, 0, img, resize.Lanczos3) img = dither.Monochrome(dither.FloydSteinberg, img, 1.18) if err := p.SetEncoding(escpos.CharPagePC427); err != nil { log.Fatalf("failed to set encoding: %v\n", err) } if err := p.SetPrintSpeed(5); err != nil { log.Fatalf("failed to set print speed: %v\n", err) } if err := p.PrintImage(img); err != nil { log.Fatalf("failed to print image: %v\n", err) } if len(os.Args) > 2 && os.Args[2] != "" { fmt.Fprintf(p, "\n%s\n", os.Args[2]) } fmt.Fprint(p, "\n\n\n") if err := p.CutPaper(); err != nil { log.Fatalf("failed to cut paper: %v", err) } if err := p.Wait(); err != nil { log.Fatalf("failed to print: %v\n", err) } }