2012-07-10 60 views
5

我需要使用C#.NET将内容发送到打印机,方法与PRINT命令相同。记事本与PRINT命令不同的是什么?

我有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命令,但我需要始终替换标签模板中的某个占位符值。我可以在磁盘上创建一个临时文件并打印,但我宁愿避免这种情况。

+0

我想它将^ Q等翻译成相应的控制字符 – 2012-07-10 10:15:44

+0

打印在这方面没有做任何事情,那就是区别。记事本尽力显示文件中的任何字符,但可能会删除过程中的一些不可打印的字符。 – 2012-07-10 10:17:41

回答

4

说实话,问题标题是错误的。 PRINT根本不会做任何特别的事情,它只是将其所有输入刷新到打印机。它是记事本,它通过Windows的打印系统发送各种命令,用于分页和行尾,以及最终打印的数据。您显示的代码是原始打印机数据,因此您必须将其发送为“原始”,而不是文本。所以在技术上它是this question的重复。

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

+0

谢谢你的澄清。这工作。我应该改变问题标题? – 2012-07-13 09:11:08

+0

@JanisVeinbergs我试图澄清一点。 :) – CodeCaster 2012-07-13 09:13:18