Argox OS214中的自动换行文本 - PPLA

Ric*_*ras 5 printing label

我使用PPLA语言将标签直接打印到Argox OS-214.

我怎样才能用长文字包装呢?

我是否必须进行计算,或者是否有任何功能可以帮助我?

如果我必须计算,你有任何关于如何做的提示吗?

小智 3

PPLA 语言手册中,没有对长文本行进行自动换行的功能,因此在将命令发送到打印机之前,您必须自己计算在哪里插入换行符。
如何做到这一点取决于您所使用的编程语言;例如,在 PHP 语言中,有一个自动换行函数可以为您完成此操作(自动换行函数的 C 源代码位于此处,第 803 行)。可以在维基百科
上找到自动换行算法的简单描述:

SpaceLeft := LineWidth
for each Word in Text
    if (Width(Word) + SpaceWidth) > SpaceLeft
        insert line break before Word in Text
        SpaceLeft := LineWidth - Width(Word)
    else
        SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)
Run Code Online (Sandbox Code Playgroud)

首先,你必须将文本分割成单词,但我想这对你来说不是问题,所以我不会进一步阐述。
LineWidth应计算为标签宽度减去左右边距宽度。
假设您的文本使用单一固定宽度(非比例)字体,您可以LineWidth通过简单地将其除以字符宽度(或者简单地打印一长行文本,然后计数)将其转换为多个字符打印的字符数);这样每个单词的长度就对应于它的字符数。
否则,如果您使用比例字体,计算每个字的宽度会更加困难,除非您知道每个字符的宽度。
一个想法可能是使用与标签具有相同像素大小的图像,只是为了模拟打印并计算在哪里插入换行符,但这需要有一个函数来计算每个单词的像素宽度(例如在PHP有imagettfbbox函数),并且还可以在打印机和PC上使用完全相同的字体。
请注意,您可能还必须处理一些比标签宽度长的单词;在这种情况下,您必须简单地拆分单词 atLineWidth并继续下一行。