5

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

如何自动换行长文本?

我是否必须进行计算,或者是否有任何功能可以为我做这件事?

如果我必须计算,你有什么建议吗?

4

1 回答 1

3

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

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)

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

于 2013-03-16T21:27:14.547 回答