How can I print to an actual printer?
It's possible to use Go to call the correct command line arguments to print whatever files are needed. You'd just need to print this information to a file first.
Please see the information on Microsoft TechNet for this method.
Another method I am less familiar with is to use the DLL's present in Windows through Go to invoke printing. I wasn't able to find as much information on this, but this Go documentation has some pretty good examples.
There are a couple directions you can look in! :)
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