私はWindowsドライバを渡さずに、プリンタに直接テキストと画像を印刷しようとしています。このアプリケーションは、シリアル針プリンタ用のものであるので、私は、この方法を印刷しなければならない、と私はグラフィックスメソッドイメージをC#でrawモードで印刷するには?
/*Text Print*/
_printPageEventArgs.Graphics.DrawString(
_printArray.ElementAt(i).Text,
_printArray.ElementAt(i).Font,
Brushes.Black,
ClientRectangle,
stringFormat);
/*Image Print*/
printPageEventArgs.Graphics.DrawImage(
_printArray.ElementAt(i).Image,
_printArray.ElementAt(i).StartPosX_100Inch,
_printArray.ElementAt(i).FinalStartPosY_100Inch,
_printArray.ElementAt(i).ImageWidth_100Inch,
_printArray.ElementAt(i).ImageHeight_100Inch);
を用いて印刷をしようとした場合、プリンタは何を印刷する永遠にかかります。 だから私は直接
public static extern UInt32 PrtWrite(IntPtr hPrt, byte[] pbWriteBuffer,
UInt32 nNumberOfBytesToWrite, ref UInt32 lpNumberOfBytesWritten);
それを書くために、プリンタのDLLを使用しています。しかし、私は正しいバイト形式に画像を変換することができませんでしだ。この変換をしようとしましたが、どれも働いていない、私が得るすべてが文字化けです:
//TEST 1
UInt32 dwNoOfBytesWritten = 0;
Image img = Image.FromFile(@"c:\zzz.jpg");
ImageConverter converter = new ImageConverter();
byte[] imageToPrint = (byte[])converter.ConvertTo(img, typeof(byte[]));
PrtWrite(_printerPointer, imageToPrint, (UInt32)imageToPrint.Length,
ref dwNoOfBytesWritten);
//TEST 2
UInt32 dwNoOfBytesWritten = 0;
Image img = Image.FromFile(@"c:\zzz.jpg");
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imageToPrint = ms.ToArray();
PrtWrite(_printerPointer, imageToPrint, (UInt32)imageToPrint.Length,
ref dwNoOfBytesWritten);
これはWINCORニックスドルフプリンタ用のAPIです。彼らのSDKで
、メソッドは次のように定義されます
extern "C" __declspec(dllimport) DWORD PrtWrite (HANDLE hPRT,
LPBYTE pbWriteBuffer, DWORD dwLenWriteBuffer, LPDWORD pdwNoOfBytesWritten);
そして、これは私が彼らのマニュアルからきたすべてです:
PrtWrite機能がpbWriteBufferの 内容のnNumberOfBytesToWriteバイトを書き込みますがプリンタに送信します。この機能を使用して、 のデータ、通常の印刷データ、およびプリンタ制御 シーケンスを送信することができます。
PrtWriteには文字コードマッピングがありません。したがって、 の出力は、ロードされた文字ジェネレータによって異なります。
hPrt - > PrtOpenによって返されたプリンタへのハンドル。
pbWriteBuffer - 変数へ>ポインタ - > lpNumberOfBytesWritten プリンタ
に書き込むバイト数を指定 - プリンタ
nNumberOfBytesToWriteに に書き込まれるデータを含むバッファへ>ポインタ 書き込まれたバイト数を受信する
*非常に良い。非常に高く評価。 – casperOne