この質問に基づいて、Zebra TLP2844 に直接コマンドを送信する次のコードを実装しました。
var
cmm: AnsiString;
i: integer;
begin
commands.saveToFile('path\to\a\file');
Printer.BeginDoc;
cmm := '';
for i := 0 to commands.Count-1 do
cmm := cmm + commands[i] + #10;
Escape(Printer.Canvas.Handle, PASSTHROUGH, Length(cmm), PAnsiChar(cmm), nil);
Printer.EndDoc;
end;
コマンドは、プリンターに送信するすべてのコマンドを含む TSringList です。すべてのコマンドをテキスト ファイルに保存することに注意してください。
さて、このテキスト ファイルを印刷用に送信すると、ドライバの設定から、ツール -> アクション -> ファイルの送信を使用して、完全に印刷されます。
上記のコードを使用すると、印刷後に余分な行のラベルが吐き出されます。
明らかに、ここで何か間違ったことをしていることがわかりますが、何が原因なのかわかりません。
私が試したこと
- コードのようにコマンドを連結せずに、コマンドを 1 つずつ送信します。結果:何も印刷されません。
- #10を#13#10に交換。結果:同じクレイジーな動作 (実際、Zebra EPL のドキュメントによると、見つかった #13 はすべて無視されます)
Zebra のツールとまったく同じ方法でコマンドをプリンタに送信するには、他に何を試せばよいでしょうか?