I have a messaging server written in Go. Now I have a requirement that some messages need to be printed out on paper by the server.
How can I implement this in Go? I'm having a real hard time finding anything on the subject.
The app will be running on Windows machines and needs to be able to print UTF8 encoded text in a fixed width font. So no fancy formatting (bold text, color etc) is needed.
I'm rather completely in the dark on how to go about this... Can someone shed some light on this for me and point me in the right direction?
Using the answers from @abalos and @alex I was able to get this to work the way I need it to. Answering this to supply a sample of how to use it - it's pretty straightforward using alex's library:
import prt "github.com/alexbrainman/printer"
...
name, err := prt.Default() // returns name of Default Printer as string
if err != nil {
log.fatal(err)
}
p, err := prt.Open(name) // Opens the named printer and returns a *Printer
if err != nil {
log.fatal(err)
}
err = p.StartDocument("test", "text") // test: doc name, text: doc type
if err != nil {
log.fatal(err)
}
err = p.StartPage() // begin a new page
if err != nil {
log.fatal(err)
}
n, err := p.Write([]byte("Hello, Printer!")) // Send some text to the printer
if err != nil {
log.fatal(err)
}
fmt.Println("Num of bytes written to printer:", n)
err = p.PageEnd() // end of page
if err != nil {
log.fatal(err)
}
err = p.DocumentEnd() // end of document
if err != nil {
log.fatal(err)
}
err = p.Close() // close the resource
if err != nil {
log.fatal(err)
}
More details on the Windows API can be found here
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments