Delphi POS打印收据文字对齐

时间:2018-01-16 15:51:49

标签: delphi delphi-7

如果输出格式应该是这样的话,如何打印到POS打印机? 纸张尺寸3英寸

line 1 = ITEM DESCRIPTION 
line 2 = QTY UNIT x UNIT PRICE_ _ _ _ _ _ _ TOTAL PRICE
Total PRICE is right align

样本格式

BOND PAPER
1 REAM x 100.00 --------------- 100.00
BOND PAPER 2
2 REAM X 100.00 --------------- 200.00
BOND PAPER 3
1 REAM X 1,354.00 ----------- 1,354.00

1 个答案:

答案 0 :(得分:0)

POS打印机通常使用固定宽度字体,因此右对齐TotalPrice的值只是计算在ItemDescription之后插入到行中的填充量。

在您的示例中,您使用的是38个字符的行,因此如果ItemDescription的长度为15个字符长,并且TotalPrice的长度为6个字符长,则填充需要为{{1} } 长字符。但是因为你似乎在ItemDescription之后立即添加了一个空格,而在TotalPrice之前你的Padding需要减去这两个额外的字符......所以,在这种情况下,Padding需要15个字符长。

将此应用到您的上一行:

38 - (ItemDescription + TotalPrice) = 38 - (15 + 6) = 17

因此,您将发送到固定宽度字体POS的最后一行将是:

Length(ItemDescription) = 17
Length(TotalPrice) = 8
Padding = 38 - (17 + 8 + 2) = 11

对于给定的固定宽度字符纸张尺寸,应始终正确对齐TotalPrice(将38更改为您的POS打印机所评定的字符数),以及所有长度为ItemDescription,TotalPrice和您的单个字符的总长度空格不超过打印机的总字符宽度(您应该在计算填充之前检查这一点)。