我无法通过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;
端;
答案 0 :(得分: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;