1
private void printfunction(string cmd)
  {
   string command = cmd;

   // Create a buffer with the command
   Byte[] buffer = new byte[command.Length];
   buffer = System.Text.Encoding.ASCII.GetBytes(command);

   // Use the CreateFile external functo connect to the LPT1 port
   SafeFileHandle printer = CreateFile("LPT1:", FileAccess.ReadWrite, 0, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero);

   // Aqui verifico se a impressora é válida
   if (printer.IsInvalid == true)
   {
    MessageBox.Show("Printer not found!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
   }

   // Open the filestream to the lpt1 port and send the command
   FileStream lpt1 = new FileStream(printer, FileAccess.ReadWrite);
   lpt1.Write(buffer, 0, buffer.Length);

   // Close the FileStream connection
   lpt1.Close();
  }

上記のコード関数を使用して、ESC/POSでサポートされているEPSONTM88IIIプリンターに生データを送信しています。

プリンタでは、デフォルトで3つのフォントしか送信していません。しかし、私はARIALFONTで印刷したくありません。Arialフォントで印刷するにはどうすればよいですか。

Windowsプリントスプーラーまたはプリンタードライバーの使用を提案しないでください。生データを送って印刷したい。

どうすればこれを行うことができますか?

コーディングは、Visual Studio 2008を使用してC#.NETで行われます。

4

4 に答える 4

1

これは、プリンタをグラフィックモードにして、ピクセルデータを送信することで技術的に可能です。プログラムでモノクロビットマップを作成する必要があります。ビットマップクラスとグラフィックスクラスで作業を完了できます。Arialで初期化されたフォントでGraphics.DrawTextを使用して、テキストを希望どおりに取得します。ビットマップピクセルをプリンタコマンドにエンコードすることは重要な部分です。プリンタ用の適切なプログラミングマニュアルを用意してください。

それ以外の場合、これはプリンタドライバが行うこととまったく同じです。それは同じように遅くなります。

于 2011-01-25T11:24:50.823 に答える
0

それはできません。生のテキストは、慣例により、等幅フォント(Courierなど)を使用して印刷されます。

特定のプリンタモデルでのみ動作する必要がある場合は、Postscriptを使用してみることができますが、プリンタにArialがインストールされている可能性はほとんどありません。Helveticaの可能性が高くなります。

于 2011-01-25T11:00:23.823 に答える
0

プリンタによっては、他のコードを使用する必要があります。

EPSON ESC / Pのこのwikipedediaエントリは、多くのことを説明しています。

「ESCk1」(ESC =コード27)をプリンターに送信すると、サンセリフフォントになります。しかし、私はそれが比例しているとは思いません。

本当に自分のフォントを使いたいのなら。それを(黒/白で)Image/Bitmapオブジェクトにレンダリングできます。プリンタをグラフィックモードにしてから、ピクセルごとに印刷します。(実際には、8または9ピクセルごとに印刷します)。

于 2011-01-25T11:14:34.653 に答える
0

私の知る限り、TM88は固定幅のテキスト、バーコード、ビットマップ以外のものをネイティブにサポートしていないため、TM88のWindowsドライバーは印刷出力をビットマップとしてプリンターに送信するだけです。

エスケープコードを使用して、セリフフォントとサンセリフフォントを切り替えることができますが、どちらも固定幅になります。

于 2011-01-25T11:24:56.657 に答える