印刷コマンドを受信してデコードするアプリケーションがあります。印刷コマンドをテキスト ファイルに保存します。そして、それをバイト配列で読み取ります。デコードされた文字列には、ジャンク文字として表示される画像部分も含まれます。WritePrinter関数を使用してバイト配列をプリンターに送信しようとすると、 False が返されます。返されたエラー コード1784を確認しようとしましたが、このエラー コードとその理由については何も見つかりませんでした。
以下のコード スニペットを参照してください。
AssignFile (decodedfile, st_path + '\Sample.txt');
reset(decodedfile);
SetLength(buffer, FileSize(decodedfile));
For i := 1 to FileSize(decodedfile) do
Read(decodedfile, buffer[i - 1]);
CloseFile(decodedfile);
DocInfo.pDocName := pChar('Direct to Printer');
DocInfo.pOutput := Nil;
DocInfo.pDatatype := pChar('RAW');
PrinterName := cmbPrinters.Text;;
if not WinSpool.OpenPrinter(pChar(PrinterName), hPrinter, nil) then begin
raise exception.create('Printer not found');
end;
If StartDocPrinter(hPrinter, 1, @DocInfo) = 0 then
Abort;
try
If not StartPagePrinter(hPrinter) then
Abort;
try
If not WritePrinter(hPrinter, @buffer, Length(buffer), BytesWritten) then begin
dError := GetLastError;
ShowMessage(InttoStr(dError));
Abort;
end;
finally
EndPagePrinter(hPrinter);
end;
finally
EndDocPrinter(hPrinter);
end;
WinSpool.ClosePrinter(hPrinter);
誰かがこれに似た問題に直面している場合は、私が何か見逃しているかどうか教えてください.
ノート:
- 入力された印刷コマンドのデコードにエラーがないことを確認しました。
- Delphi4を使用しています。