ZPL - zebra:打印对齐文本块而不覆盖最后一行

时间:2011-12-05 13:52:33

标签: zebra-printers zpl text-justify

我正在使用以下命令打印对齐文本:

^FB1800,3,0,J^FT100,200^A0B,26,26^FH\^FDLONG TEXT TO BE PRINTED, WHICH DOESNT FIT IN ONLY 3 LINES...^FS

命令 ^ FB1800,3,0,J 打印宽度为1800点的字段,最多3行,对齐。

问题是如果文本超过最大行数,它会覆盖最后一行! :(这当然使最后一行的文字不可读。

我该如何避免?有人知道是否有办法削减超出文本?

文档准确地说明了这一点:

  

超过最大行数的文本将覆盖最后一行。更改字体大小会自动增加或减小块的大小。

供参考:我使用的是打印机Zebra 220Xi4。

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:5)

查看^TB命令。它优先于^FB命令,如果文本超出TB参数中定义的大小,则截断

答案 1 :(得分:1)

我遇到了同样的问题,在我的情况下修复它的问题 - 虽然不是最优雅的方式 - 是指定更多的最大行数,然后以只有前三个行的方式格式化它可见区域。

在您的情况下,例如^FB1800,7,0,J而不是^FB1800,3,0,J

这至少可以立即为我修复,因为我在标签的底部打印了这个文本。如果你需要将它放在中间或顶部的某个地方,可能会有一些技巧,在溢出区域的顶部放一个(白色)盒子,因为Zebra打印机似乎在打印前渲染。希望它有所帮助。

答案 2 :(得分:0)

根据您使用的高级编程语言(假设您是),您可以使用此类代码完成相同的操作(将要打印的文本截断为指定数量的字符)(C#在这里显示):

public void PrintLabel(string price, string description, string barcode)
{
    const int MAX_CAPS_DESC_LEN = 21;
    const int MAX_LOWERCASE_DESC_LEN = 32;
    try
    {
        bool descAllUpper = HHSUtils.IsAllUpper(description);
        if (descAllUpper)
        {
            if (description.Length > MAX_CAPS_DESC_LEN)
            {
                description = description.Substring(0, MAX_CAPS_DESC_LEN);
            }
        }
        else // not all upper
        {
            if (description.Length > MAX_LOWERCASE_DESC_LEN)
            {
                description = description.Substring(0, MAX_LOWERCASE_DESC_LEN);
            }
        }
        . . .

这就是我正在使用的;有没有理由更喜欢" raw" ^ TB命令这个?