【问题标题】:Zebra Programming Language (ZPL) II using ^FB or ^TB truncates text at specific lenghtsZebra 编程语言 (ZPL) II 使用 ^FB 或 ^TB 截断特定长度的文本
【发布时间】:2016-07-20 01:27:33
【问题描述】:

我正在编写代码来打印植物园的标签。每个标签都是单独打印的,但每个标签上的信息不同。每个标签都包含一个科学名称,其大小差异很大,因此可以超过 2 行(我们的标签尺寸为 10 厘米宽 x 2.5 厘米高)。 当我们超过 24 个字符时,我们的问题主要出现在名称上(参见带 ** 的行)。 如果我们选择一个不超过 24 个字符的名称,那么它会打印得很好。 任何更多它都不会打印。 如果我们从标签中删除所有其他“项目”并只留下“名称”元素,那么它只打印前 24 个字符并截断其余字符(我们这样做是为了测试我们的 ^FB 块和另一个元素之间是否可能重叠可能导致此问题)。 我们对使用 ^FB 的其他元素进行了尝试,发现它们表现出相同的行为,但发生此问题的长度不同:例如,“cc”(国家代码的缩写)限制为 21 个字符。

补充信息:我们在 BASIC 环境中编译此代码并使用变量,例如“:name:”、“:Acc.dt”:”,如下所示。我们的数据库提供了这些信息,我们已经检查了任何内部会截断长名称等的例程。我们的代码在 ZPL 中运行良好,但我们最近不得不迁移到 ZPL II(我们购买了更新的型号 GX430t)并且不得不修改我们的 ZPL 代码,此时此问题开始出现。

这是我们的代码:

^XA
^LH40,40
^MMT
^PW1200
^LL1200
^FO16,05^A0N,35,^FDAcc. num.^FS
^FO170,05^A0,35,^FV":accnum:"^FS
^FO360,05^A0,35,^FV":qual:"^FS
^FO350,35^A0N,30,^FDAcc.dt.^FS
^FO450,35^A0N,30,^FB790,3,0,L,
^FH\^FV":accdt:"^FS
^FO430,70^^A0N,25,^FB790,3,0,L,
^FH\^FDProv. type^FS
^FO560,70^A0N,25,^FV":provtype:"^FS
^FO800,225^A0N,30,^FB790,3,0,L,
^FV":cc:"^FS
**^FO10,100^A0N,40,^FB790,3,0,L,
^FV":name:"^FS**
^FO1000,05^A0,35,^FV":proptype:"^FS
^FO5,225^A0,25^FVColl.^FS 
^FO55,225^A0,25^FV":coll:"^FS
^FO375,225^A0,25,^FV":consstat:"^FS
^FO1000,70^A0,25,^FV":reqby:"^FS
^FO535,180^BCN,55,N,N,N^FV":qual:"^FS
^FO60,45^BCN,35,N,N,N^FV":accnum:"^FS
^PQ1,0,1,Y
^XZ

这是我们试图解决的问题(如果有些看起来像通配符,我们深表歉意):

  1. 更改标签上的字体类型、大小和位置;
  2. 将 ^FO 更改为 ^FT;
  3. 查看了我们内部的数据库逻辑;
  4. 带走^FH\;
  5. 更改 ^FB 行中的值(我们尝试了几乎所有可能的排列方式);
  6. 手动输入的名称超过 24 个字符(使用记事本 - 没有数据库/编译器)- 同样的问题。

对此的任何想法将不胜感激 克里

【问题讨论】:

  • 我们如何在 zpl 中写一个粗体的文本?

标签: truncate zpl zpl-ii


【解决方案1】:

我以前遇到过这个问题,并且跨越打印机制造商、固件和语言。

首先,一些直接来自 2014 ZPL II 编程指南 (P1012728-009 Rev. A) 的释义解释。

"^TB 命令打印一个具有定义宽度和高度的文本块。该文本块具有自动换行功能。如果文本超过块高度,则该文本是被截断了。”

^FB(字段块)命令允许您将文本打印成定义的块类型格式。它可以格式化 ^FD(字段数据) 使用来源、字体和 为文本字符串指定旋转,并且它包含自动换行功能。"

从技术上讲,文本块和字段块之间的区别在于,前者的高度以 dots 为单位,而以 lines为单位> 后者。

还要注意,虽然没有提到,^FB 命令也会截断不符合指定行数的文本,这里是 A0 的字体大小> 命令和 FB 命令的行距现在在确定是显示还是截断第二行或第三行方面发挥着重要作用。

顺便说一下,在 TSPL 等其他语言中,没有截断文本块——如果你告诉块的高度是 3 行,但有足够的文本容纳 4 行,那么第 4 行与第 3 行重叠以表明这一点——这可能看起来很糟糕,但总比不明显的截断数据丢失要好。

对于这两个命令:

  • “对您的数据使用 ^FT(字段排版)获取基线来源 最后可能的文本行,这意味着字段块将是 从下往上填充。”
  • “使用 ^FO (Field Origin) 表示从上到下填充字段块。”

实际上,我只能使 ^FB 命令按预期工作,但这可能是因为固件中没有实现 ^TB 我'使用过(ZPL II“兼容”蓝牙打印机)。

您可以在Labelary Viewer 中为 2x2 标签测试以下 sn-p:

^XA
    ~TA0
    ^MTD
    ^MNW
    ^MMT
    ^MFN
    ~SD15
    ^PR6
    ^PON
    ^PMN
    ^PW406
    ^LS0
    ^LRN
    ^LL406
    ^LT0
    ^LH0,0
    ^CI0
^XZ
^XA
    ^FO324,10,0^FB386,2,0,C,0^A0R,36,28.8^FH^FD"The King" Cupcake^FS
    ^FO278,10,0^FB386,1,0,C,0^A0R,28,22.4^FH^FDUse By 11/24/2015 02:45 PM^FS
    ^FO152,10,0^FB386,1,0,C,0^A0R,24,19.2^FH^FD11/24/2015 02:45 PM^FS
    ^FO62,140,0^FB250,1,0,R,0^A0R,24,19.2^FH^FDSL: 4 hours^FS
    ^FO38,10,0^FB386,1,0,L,0^A0R,18,14.4^FH^FDPREP DATE:^FS
    ^FO8,10,0^FB386,1,0,L,0^A0R,28,22.4^FH^FD11/24/2015 10:45 AM^FS
    ^FO62,10,0^FB50,1,0,L,0^A0R,24,19.2^FH^FDEMP:^FS
    ^FO92,10,0^FB376,3,0,J,0^A0R,18,14.4^FH^FDIngredients: 1 1/2 cups all-purpose flour, 1 teaspoon baking powder, 1/2 teaspoon salt, 8 tablespoons (1 stick) unsalted butter, room temperature, 1 cup sugar, 3 large eggs, 1 1/2 teaspoons pure vanilla extract, 3/4 cup milk.^FS
    ^PQ3,,,Y
^XZ

特别是,我将 A0FD 命令与 FB 放在一起。使用查看器,您可以快速测试在配料行中从FTFO更改的效果,更改A0字体大小的效果以及将 FB 行数从 3 更改为 2 的效果(顺便说一句,查看器不会截断文本)。

当然,实际打印标签是不匹配的,因为您的 ZPL II“兼容”打印机可能会也可能不会根据其制造商和固件版本截断文本。

希望对你有帮助!

【讨论】:

  • 我们如何在 zpl 中写一个粗体的文本??
  • 粗斜体文本需要下载不同的字体然后选择它。
  • 能否给我一个代码示例或参考任何链接,以便我从中获得帮助
  • 那么文本颜色呢?我们可以将文本颜色更改为红色或蓝色或任何其他颜色吗??
  • ~DB 和~DS 命令允许您下载位图和可缩放字体; ^A@ 命令允许按名称选择字体。查看zebra.com/content/dam/zebra/manuals/en-us/software/…。对于颜色,您需要使用具有颜色功能的热敏打印机并检查语言参考,希望它具有 ZPL 风格,带有选择颜色或画笔的命令。
猜你喜欢
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2015-08-04
相关资源
最近更新 更多