我正在尝试使用 esc/p 命令(EPSON TM-T70)直接打印到打印机,而不使用打印机驱动程序。代码在这里找到。
但是,如果我尝试打印任何字符串,它们会被截断。例如:
MyPrinter := TRawPrint.Create(nil);
try
MyPrinter.DeviceName := 'EPSON TM-T70 Receipt';
MyPrinter.JobName := 'MyJob';
if MyPrinter.OpenDevice then
begin
MyPrinter.WriteString('This is page 1');
MyPrinter.NewPage;
MyPrinter.WriteString('This is page 2');
MyPrinter.CloseDevice;
end;
finally
MyPrinter.Free;
end;
只会打印“This isThis is”!我通常不会MyPrinter.NewPage
用来发送换行命令,但无论如何,它为什么会截断字符串?
在 RawPrint 单元WriteString
函数中还要注意:
Result := False;
if IsOpenDevice then begin
Result := True;
if not WritePrinter(hPrinter, PChar(Text), Length(Text), WrittenChars) then begin
RaiseError(GetLastErrMsg);
Result := False;
end;
end;
如果我在此处设置断点并单步执行代码,则WrittenChars
设置为 14,这是正确的。为什么会这样?