Я пытаюсь печатать напрямую на принтер с помощью команд 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;
будет печатать только "Это - Это"!Обычно я бы не использовал MyPrinter.NewPage
для отправки команды разрыва строки, но независимо от того, почему она обрезает строку?
Также обратите внимание на функцию RawPrint 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;
Если я поставлю точку останова и пройдусь по коду, то WrittenChars
будет установлен в 14, что правильно.Почему это так действует?