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# ベースのプログラムをプログラムしてその動作を再現するにはどうすればよいのでしょうか? 印刷ロジックを実装すると、メモ帳と同じようにプレーンテキストが印刷されるためです。

PRINTC# から Process.Start を使用してコマンドを呼び出すことができることはわかっていますが、ラベル テンプレートのプレースホルダー値を常に置き換える必要があります。ディスクに一時ファイルを作成して印刷することもできますが、そのようなシナリオは避けたいと思います。

4

1 に答える 1

4

正直なところ、質問のタイトルは間違った方法です。PRINTスペクタクルなことは何もしません。プリンタへのすべての入力をフラッシュするだけです。Windowsの印刷システムを介して、ページングや行末などのさまざまなコマンドを送信し、最終的には印刷するデータを送信するのはメモ帳です。表示するコードは生のプリンタデータであるため、テキストとしてではなく「生」で送信する必要があります。したがって、技術的には、この質問の複製です。

その方法はここで説明されています。P/Invokesを使用していwinspool.Drvます。

于 2012-07-10T10:15:33.270 に答える