我有用Go編寫的消息服務器。現在我要求服務器在紙上打印一些消息。前往:我如何才能打印到實際打印機
如何在Go中執行此操作?我真的很難找到關於這個問題的任何事情。
該應用程序將在Windows機器上運行,需要能夠以固定寬度字體打印UTF8編碼文本。所以不需要花哨的格式(粗體文本,顏色等)。
我完全在黑暗中如何去解決這個問題......有人能爲我闡明這一點,並指出我在正確的方向嗎?
我有用Go編寫的消息服務器。現在我要求服務器在紙上打印一些消息。前往:我如何才能打印到實際打印機
如何在Go中執行此操作?我真的很難找到關於這個問題的任何事情。
該應用程序將在Windows機器上運行,需要能夠以固定寬度字體打印UTF8編碼文本。所以不需要花哨的格式(粗體文本,顏色等)。
我完全在黑暗中如何去解決這個問題......有人能爲我闡明這一點,並指出我在正確的方向嗎?
如果您不需要任何格式,可以使用github.com/alexbrainman/printer包。
亞歷
可以使用Go調用正確的命令行參數來打印任何需要的文件。您只需要首先將這些信息打印到文件中。
請參閱此方法的信息Microsoft TechNet。
我不太熟悉的另一種方法是通過Go使用DLL中的Go來調用打印。我無法找到儘可能多的信息,但這Go documentation has some pretty good examples.
有幾個方向,你可以看看! :)
使用從@abalos的答案,@alex我能得到這個工作,我需要它的方式。回答這個問題提供如何使用它的樣本 - 它通過Alex的圖書館是相當簡單:在Windows API
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)
}
更多細節可以發現here
不錯的工作。不知道這個存在! – abalos