Question

I'm trying to print directly to a printer using esc/p commands (EPSON TM-T70) without using printer driver. Code found here.

However, if I try to print any strings, they are truncated. For example:

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;

Would print only "This isThis is"! I wouldn't ordinarily use MyPrinter.NewPage to send a line break command, but regardless, why does it truncates the string?

Also notice in RawPrint unit WriteString function:

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;

If I put a breakpoint there and step through the code, then WrittenChars is set to 14, which is correct. Why does it act like that?

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top