2012-07-10 14 views
5

PRINTコマンドと同じ方法で、C#.NETでプリンタにコンテンツを送信する必要があります。メモ帳ではPRINTコマンドとは何が違うのですか?

私は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で呼び出すことができますが、ラベルテンプレート内のいくつかのプレースホルダー値を常に置き換える必要があることは知っています。ディスク上に一時ファイルを作成して印刷することもできますが、このようなシナリオを避けることをお勧めします。

+0

^Qなどを対応する制御文字に変換すると思います。 –

+0

その点で印刷物は何もしません。それは違いです。メモ帳ではファイル内の文字を表示するのに最善を尽くしますが、処理中の印刷できない文字が削除される可能性があります。 –

答えて

4

質問タイトルは間違っています。 PRINTはまったく驚異的なことはしません。プリンタへの入力をすべてフラッシュします。メモ帳は、Windowsの印刷システムを介して、ページングや行末やその他のコマンドや、最終的に印刷したいデータを送信します。表示するコードは生のプリンタデータなので、テキストではなく「生のまま」に送信する必要があります。技術的にはthis questionの複製です。

これは、hereの説明です。それはwinspool.DrvにP/Invokesを使用しています。

+0

ありがとうございます。これは機能します。私はおそらく質問のタイトルを変更する必要がありますか? –

+0

@JanisVeinbergs私はそれを少し明確にしようとしました。 :) – CodeCaster

関連する問題