5

PRINT我需要以与命令相同的方式将内容发送到 C# .NET 中的打印机。

我有捆绑了QLabel软件的 Godex 热敏打印机。现在它可以选择将标签另存为命令,您可以使用命令提示符PRINT命令将其传递给打印机。该文件如下所示:

^Q80,3
^W100
^H10
^P1
^S3
^AD
^C1
^R2
~Q+0
^O0
^D0
^E35
~R200
^L
Dy2-me-dd
Th:m:s
AH,0,0,1,1,0,0,X
AH,744,0,1,1,0,0,X
AH,746,560,1,1,0,0,X
AH,0,550,1,1,0,0,X
AG,160,208,1,1,0,0,
AA,234,283,1,1,0,0,Haloo
E

当我做这样的事情时,这有效:

net use LPT2 \\localhost\godexUsbPrinter /yes
print /D:LPT2 label.cmd

它可以很好地打印出我的标签。

现在,如果我在记事本中打开它并打印,它只会打印我这个文本。

我想知道PRINT命令在幕后做了什么,我如何编写基于 C# 的程序来复制行为?因为当我实现打印逻辑时,它只是像记事本一样打印纯文本。

我知道我可以PRINT从 C# 调用带有 Process.Start 的命令,但我需要一直替换标签模板中的一些占位符值。我可以在磁盘上创建一个临时文件并打印它,但我宁愿避免这种情况。

4

1 回答 1

4

老实说,问题标题是错误的。PRINT根本没有做任何壮观的事情,它只是将所有输入刷新到打印机。它是记事本,通过 Windows 的打印系统,发送各种命令用于分页和行结尾以及诸如此类的东西,最终发送您要打印的数据。您显示的代码是原始打印机数据,因此您必须将其“原始”而不是作为文本发送。所以从技术上讲,它是这个问题的副本。

此处解释了如何执行此操作。它使用 P/Invokes 来winspool.Drv.

于 2012-07-10T10:15:33.270 回答