4

我正在使用以下命令打印合理的文本:

^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 打印机。

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

4

3 回答 3

7

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

于 2011-12-05T15:31:00.183 回答
1

我遇到了几乎同样的问题,在我的情况下解决它的方法 - 虽然不是最优雅的方式 - 是指定更多的最大行数,然后以只有前 3 个在可见区域中的方式对其进行格式化。

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

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

于 2013-07-15T12:53:57.610 回答
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);
            }
        }
        . . .

这就是我正在使用的;有什么理由更喜欢“原始” ^TB 命令吗?

于 2014-12-04T19:23:29.130 回答