【问题标题】:Delphi POS printing receipt text alignment [closed]Delphi POS打印收据文本对齐[关闭]
【发布时间】:2018-01-16 15:51:49
【问题描述】:

如果输出格式应该是这样,我如何打印到 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

【问题讨论】:

  • 请阅读stackoverflow.com/help/how-to-ask并相应地编辑您的问题
  • 欢迎来到 SO!请使用 The Tour 简要介绍 Stack Overflow,然后阅读 Asking 以了解您可以询问的内容以及如何提出您的问题。你必须展示你已经尝试过的东西,并解释它是如何不适合你的。

标签: delphi delphi-7


【解决方案1】:

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

在您的示例中,您使用的是 38 个字符的行,因此如果 ItemDescription 的长度为 15 个字符,而 TotalPrice 的长度为 6 个字符,则 Padding 需要为
38 - (ItemDescription + TotalPrice) = 38 - (15 + 6) = 17 个字符长.但是,由于您似乎在 ItemDescription 之后和 TotalPrice 之前立即添加了一个空格,因此您的 Padding 需要减去这两个额外的字符......所以,在这种情况下,Padding 需要有 15 个字符长。

将此应用于您的最后一行:

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

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

PrintLine = Concat(ItemDescription,' ',StringOfChar('-',Padding),' ', TotalPrice)

对于给定的固定宽度字符纸张大小,这应该始终右对齐 TotalPrice(将 38 更改为您的 POS 打印机额定的字符数),并且所有长度都与 ItemDescription、TotalPrice 和您的单个字符的总长度一致空格不超过打印机的总字符宽度(您应该在计算填充之前检查这一点)。

【讨论】:

  • 哦!谢谢你..我明白了。
猜你喜欢
  • 2012-07-12
  • 2018-12-08
  • 2022-10-20
  • 2016-10-21
  • 2012-05-12
  • 1970-01-01
  • 2010-10-01
  • 2020-07-12
  • 1970-01-01
相关资源
最近更新 更多