1

我无法通过 esc/pos 命令在 EPSON TM-T88V 热敏打印机上打印特殊符号(€、£、¥、ý)。以下是部分代码:

FPrintoutLines := TStringList.Create;
try
  FPrintoutLines.Add(#$1B'@');
  FPrintoutLines.Add(#$1B't'#16);
  FPrintoutLines.Add('€, £, ¥, ý'+#$A);
  Print
finally
  FPrintoutLines.Free;  
end;

在 Windows XP 上,我有正确的所有符号打印输出,问题出在 Windows 7 和 8 上。

我用命令构建了一个字符串列表,然后将它逐行发送到打印机。这适用于所有其他符号和图像,但不适用于特殊符号。

有人可以帮我吗,我怎样才能从任何 Windows 打印这个符号?

这是打印行的代码:

var
  vCurrentLine : AnsiString;
begin
...
for i := 0 to FPrintoutLines.Count - 1 do begin
  vCurrentLine := AnsiString(FPrintoutLines[i]);

  if (PrintRawData(hPrn, PAnsiChar(vCurrentLine), Length(vCurrentLine)) < 0) then begin
    log('PrintRawData error', 'NativePrint');
    EndRawPrintPage(hPrn);
    EndRawPrintJob(hPrn);
    Exit;
  end;

结尾;

4

1 回答 1

0

我找到了方法。这是在将字符串发送到打印机之前转换字符串的功能。现在它在所有 Windows 上都能正常工作

function TNativePrint.WideStringToString(const AStr : UnicodeString; vCodePage : Word) : AnsiString;
var
  vLen: Integer;
begin
  vLen := Length(AStr);

  if (vLen = 0) then begin
    result := '';
    exit;
  end;

  SetAnsiString(@result, @AStr[1], vLen, vCodePage);
end;
于 2015-10-27T15:58:19.443 回答