【问题标题】:ZPL - zebra: print justified text block without overwriting last lineZPL - zebra:打印对齐的文本块而不覆盖最后一行
【发布时间】:2012-01-13 06:04:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: zebra-printers zpl text-justify


    【解决方案1】:

    根据您使用的高级编程语言(假设您是),您可以使用这样的代码完成相同的操作(将要打印的文本截断为指定数量的字符)(此处显示的 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 命令吗?

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 您好,感谢您的回复。我使用 ^TB 命令找到了 ZPL 指南。它说此命令仅适用于固件版本为 V60.14.x、V50.14.x 或更高版本的打印机。我的打印机固件版本为 V53.17.9Z。因此,该命令不起作用,没有被解释......任何提示?
        • V53 是 V50 的更新版本,因此 TB 命令可以工作。我刚刚在我的 ZM400 V53.17.11 上试了一下。请记住,参数与 ^FB 命令不同,因此您必须修改它们,您可能还需要移动 ^FT 命令,或者您可能不再需要它
        • 我已经设法使用 TB 命令进行打印,我相信问题出在第一个参数上。现在,我尝试使用 FB 命令的主要原因是可以使用 TEXT JUSTIFICATION = J (Justified)。我希望将文本块打印为“合理”(即就像 MS Word 一样)。你知道如何使用 TB 命令来实现吗?
        • 我想我正在寻找一种结合使用 FB 和 TB 命令的方法。 FB 用于 JUSTIFIED 对齐,TB 用于截断文本而不覆盖最后一行。我正在尝试将它们组合在这里,但是....到目前为止,一无所获... =/
        • 请注意,要使其正常工作,必须在字体选择命令 (^Ax) 之后 设置 ^TB 命令。这记录在此处的注释中:support.zebra.com/cpws/docs/zpl/TB_Command.pdf - 还要确保在第一个数字参数之前有一个逗号,如下所示:^TBN,100,300
        猜你喜欢
        • 1970-01-01
        • 2017-04-02
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多