与PRINT命令相比,Notepad在幕后做了哪些不同的事情?

时间:2012-07-10 10:11:05

标签: c# .net printing

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

我有Godex热敏打印机,附带QLabel软件。现在,它可以选择将标签保存为可以使用命令提示符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#的程序来复制行为?因为当我实现打印逻辑时,它只会像记事本那样打印纯文本。

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

1 个答案:

答案 0 :(得分:4)

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

如何解释here。它使用P / Invokes到winspool.Drv