Printing 如何在实际打印机上打印?

Printing 如何在实际打印机上打印?,printing,go,Printing,Go,我有一个用Go编写的消息服务器。现在我有一个要求,一些消息需要由服务器打印在纸上 如何在Go中实现此功能?我真的很难找到关于这个主题的任何东西 该应用程序将在Windows计算机上运行,需要能够以固定宽度字体打印UTF8编码的文本。因此,不需要花哨的格式(粗体文本、颜色等) 我完全不知道该怎么做。。。有人能帮我解释一下这一点并给我指出正确的方向吗?可以使用Go调用正确的命令行参数来打印所需的任何文件。您只需要先将这些信息打印到文件中 请参阅有关此方法的信息 我不太熟悉的另一种方法是通过Go调用打

我有一个用Go编写的消息服务器。现在我有一个要求,一些消息需要由服务器打印在纸上

如何在Go中实现此功能?我真的很难找到关于这个主题的任何东西

该应用程序将在Windows计算机上运行,需要能够以固定宽度字体打印UTF8编码的文本。因此,不需要花哨的格式(粗体文本、颜色等)


我完全不知道该怎么做。。。有人能帮我解释一下这一点并给我指出正确的方向吗?

可以使用Go调用正确的命令行参数来打印所需的任何文件。您只需要先将这些信息打印到文件中

请参阅有关此方法的信息

我不太熟悉的另一种方法是通过Go调用打印使用Windows中的DLL。我找不到那么多关于这个的信息,但是这个


你可以朝几个方向看!:)

使用@abalos和@alex的答案,我能够以我所需要的方式实现这一点。回答此问题以提供如何使用它的示例-使用alex的库非常简单:

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)
}

有关Windows API的更多详细信息,请参见

如果您不需要任何格式,可以使用软件包。做得好。我不知道这个存在!关于这个库的警告,它只打印纯文本文件,而不是DOCX或PDF。你可以改为使用