一张 15×5 毫米的小标签上要打品名、规格和批次,软件里排得整整齐齐,打出来末尾两个字不见了;一排地址本来是两行,实物变成三行,第三行压住了下面的条码;或者整段文字突然小了一圈,小到站在机器旁边都看不清;又或者预览里明明是两行,实物只有一行、后半截直接消失。这四种情况经常一起被报成「打印机少打内容」,实际上它们的成因各不相同,处理动作也完全不同。
真正发生的事是:文字在版面里放不下时,软件或机器必须替你做一次决定——是任由它溢出到框外、是折成更多行、是把字号缩小、还是把多余的部分丢掉。这四个动作对应四个开关,散落在对象属性、软件渲染、驱动设置和机器指令四个不同的地方。设计的人往往只在其中一处设过,剩下三处保持默认值,于是设计态与生产态就分家了。
本文用三件真实参照物来讲:Brady BBP11 这类桌面热转印机(典型的「软件设计 + 驱动发送」链路)、Brady B-423 聚酯标签 15×5 毫米这种极小规格耗材(版面窄,越界问题最先在这里暴露),以及 SATO CT4-LX-203DPI 这类带屏桌面机(面板与指令层都能改参数,适合说明「机器侧也有硬边界」)。文中涉及的具体规格、软件功能名称与参数取值以产品页、软件帮助与随机手册为准。
先把边界划清楚,避免查错方向。条码下方那串可读数字缺字、变扁、与条码宽度对不上,属于条码对象自身的可读字符设置,请转条码可读字符缺失与字体比例失真排查。内容在标签边缘找不到、或开了碳带节省之后下半段整块消失,是机器侧可打印区域与节带判定的问题,请转碳带节省模式与打印区域设置异常排查。换了一台机器之后整份版面被整体放大或缩小,属于驱动与页面级缩放,请转同一模板换机型后输出尺寸不一致排查。毫米与英寸、203 与 300 dpi 换算错造成的尺寸偏差,请转打印预览与实际输出不一致的单位与分辨率换算排查。

Brady BBP11:典型的桌面热转印机,版面在软件里设计、经驱动发送,文字最终由哪一层决定换行,取决于这条链路上每一层的设置
一、四类现象一次性分流:少了字、多了行、小了字,还是被切了半个
这一节是全篇最省时间的一段。让现场把实物样张与软件里的版面并排放在一起,只问一个问题:与设计稿相比,哪一项变了?
- 字数变少,且少的位置固定在末尾。例如每张标签最后两个字符不见,前面的都对。这是截断——多余内容被丢弃。字数少的程度随数据长度变化:数据越长,丢得越多。
- 行数变多,总高度增加。两行变三行,第三行压到下面的条码、边框或空白区上。这是换行。它的特征是内容一个字都没丢,只是被重新排了。
- 内容完整,但整体字号变小。字迹变细、笔画开始粘连,长度越长字越小,最短的那条数据反而正常。这是缩放——为了塞进固定框,软件或驱动把字号往下压。
- 内容完整、位置也对,只是最后一个字被边缘切掉一半。这是不处理——对象框只是一条参考线,文字照原样溢出到框外,被可打印宽度或相邻对象吃掉。
分流口诀:字数少 → 查截断;行数多 → 查换行;字变小 → 查缩放;字被切 → 查溢出。四类现象在实物上很容易分辨,但很多排查一开始就走错,是因为只看软件预览、不看实物样张。软件预览是软件自己画的,它不保证机器也这么画。
二、「自动」这件事,其实分散在四个地方各管一段
绝大多数误判来自一个假设:以为在软件里设了「自动换行」,机器就会自动换行。实际上一段文字从设计稿到实物,要经过四层,每一层都可能按自己的规则重新处理一次。
- 第一层,对象属性(设计态)。文本对象是单行还是段落、宽度是多少、超出后做什么,都写在这里。这是唯一由设计者直接控制的一层。
- 第二层,软件渲染(预览态)。你在屏幕上看到的换行,是软件按自己的排版引擎算出来的结果。它可能与机器无关,也可能在发送前被转成逐行坐标。
- 第三层,驱动(发送态)。驱动会决定字体是用机器内置字体还是作为图形下载、是否套用页面缩放、是否按可打印区域裁剪。
- 第四层,指令与固件(执行态)。机器只认指令。指令里如果没有换行这个动作,前面三层的设置全部作废。
由此得到本文最重要的一条判断:「软件里换行了」不等于「机器上换行了」。很多软件在发送时会把已经排好版的多行文字拆成若干个独立坐标分别发送,这种情况下换行是软件完成的,机器只当它是好几段文字;而一旦换了一种发送方式——比如直接从业务系统拼指令、或换成另一套模板格式——换行就没有人做了,文字退回成一整串,直接溢出被裁。
反过来也成立:软件里没设换行,不代表机器不会换行。如果指令层带了换行块参数,机器会按自己收到的宽度重新折行,结果与设计稿的行数、行距都不一致。所以排查这类问题时,必须同时问清两件事:这一层是谁在做换行,下一层会不会再做一次。
三、四种越界处置的精确含义,以及它们在软件里叫什么
名字各家不同,动作只有四个。把动作认清楚,再看菜单就不会被译名绕住。
- 不处理(溢出):对象框只是画给你看的参考线,文字照原样往外排。屏幕上看起来只是超出了虚线框,实物上超出部分会被可打印宽度裁掉,或者被后画的对象盖住。这类问题在软件里几乎看不到异常,最容易漏。
- 换行:需要一个「宽度」作为折行依据。宽度可能来自对象框宽度、段落宽度、或者条码宽度。宽度缺失或被设成「随内容自动」,换行就不会发生。
- 缩放:分两种——整体等比缩小,和只压缩字符的水平宽度。后者高度不变,字会变瘦,汉字笔画容易粘连。缩放到一定程度必须停下,否则就不可读了,因此多数软件都提供字号下限。
- 截断:装不下的部分直接丢弃。它的表现最像「正常打印」,因为剩下的部分排版完好、位置正确、也不报错。
三套常见软件里这些开关的大致位置:BarTender 的文本对象分单行与段落两类,换行在「文本格式」属性页的换行选项卡里(换行以适应指定宽度),缩放在独立的「自动适应」属性页里,并且可以只压缩字符的水平宽度、不影响高度;需要注意的是,启用自动适应后,字号设置会覆盖字体属性页里的值。NiceLabel 把这件事收在一个「文本适应」选项里,共四档:无、忽略过剩内容(即截断)、调整高度以适合内容(即纵向增长)、通过调整字体大小适应内容(即缩放,并可设定允许的字号范围)。Brady Workstation 一类的软件同样把「适应」与「换行」做成两个独立开关,具体名称随版本略有差异,以软件自带的帮助为准。
这里有一条实操建议:不要同时打开换行与缩放。两者叠加时,先换行、再对换行后的结果缩放,最终字号取决于最长那一行折成了几行,结果不可预测,也很难在样张上复现。选一个,另一个关掉。
四、为什么设计时刚好、生产时溢出:样例数据是最大的坑
这是本文最核心的一节。九成「以前一直好好的,这个月开始少字」的投诉,根因都在这里:设计模板时用的是短样例,生产时灌进去的是真实数据,而真实数据更长。
设计阶段的习惯是敲一个「产品A」看看效果,长度合适就保存。但实际数据来自业务系统:品名可能是「不锈钢法兰球阀 DN50 PN16」,规格串里带括号与斜杠,地址有三行,客户备注偶尔还有一长串英文。这些数据在数据库里是变长的,而模板的宽度是固定的。
正确的判断依据不是「典型值」,而是最长可能值。做法是把它算出来,而不是凭肉眼估。字符容量的核算只有一步:可用宽度 ÷ 单个字符宽度。
- 先把可用宽度换成点。203 dpi 下 1 毫米约合 8 个点,300 dpi 下约合 12 个点。一条 15 毫米宽的标签,203 dpi 下可用约 120 点,扣掉左右各 2 毫米的边距,实际约 88 点。
- 再看单个字符占多少点。点阵中文字体是方形的,24 点字体每个汉字占 24 点、每个半角字母数字约占 12 点。作为参照,TSPL 手册给出的实测值是:60 毫米宽、203 dpi、24 点中文字体、一倍率下,一行约可排 19 个全角汉字或 39 个半角字符。
- 除一下就知道上限。按上面的例子,88 ÷ 24 约等于 3.6,也就是一张 15×5 的标签,一行只能放 3 个汉字。4 个字就必须折行,而标签总高只有 5 毫米,一行 24 点的字本身就占 3 毫米,第二行根本放不下——这就是小规格标签永远出问题的原因。
把这条算完,很多争论就不用争了:不是机器不好,也不是软件有缺陷,是这张标签在物理上放不下这么多字。此时正确的处理是改设计——缩字号、拆字段、换更大的规格、或者把长内容转到二维码里,而不是在软件里反复调换行。

Brady B-423 聚酯标签 15×5 毫米:版面越窄,字符容量越早见底,换行与截断这类问题几乎总是先在最小规格上暴露
五、换行之后的三个连带问题
换行本身不是故障,它带来的是版面被重新占用。以下三件事如果不提前处理,换行就会引发新的投诉。
- 压到下方对象。换行后总高度增加,第三行正好落在条码、边框或有效期的位置上。屏幕上因为对象是分层的,文字压在条码上仍看得见;实物上两层墨叠在一起,条码可能直接扫不出。处理办法是给文本对象预留「最坏情况」的高度,并把下方对象按最坏情况往下排;或者把文本与下方对象编成一组,一起移动。
- 行距把总高撑破。行距是行与行之间附加的空隙。三行文字加上行距,很容易超出对象高度。很多软件的对象高度是硬边界,超出的行不是被压扁,而是直接被丢掉——于是「换行」与「截断」同时发生,现象变成「换行了但还是少字」,最难判。
- 末行只剩一两个字。这是排版里的孤行问题。中文按字断行,英文按空格断词,同一段混排文字在两种断法之间来回切换,末行经常只剩一个字,既难看也浪费高度。处理办法是略调宽度或字号让断点前移,而不是靠加空格硬顶。
一条经验:换行必须与「最大行数」和「对象高度」一起设。只开换行、不设上限,等于把问题从「少字」换成「压字」;只设上限、不开换行,等于把问题换成「截断」。三者是一组参数,不能分开调。
六、缩放看起来最省事,代价藏在可读性里
缩放是最容易被选中的方案,因为它一次设置就能让所有长度都「塞得下」。但它有三个代价,往往在验收之后才显现。
- 字号会跌破可读下限。一行 24 点的字,为了塞进三倍长度的内容,可能被压到 8 点。小标签上 8 点字的笔画会粘连,肉眼难辨,扫码枪旁的人工核对环节基本失效。多数软件允许设字号下限,这个下限必须设,不能留默认。
- 只压横向会让字变形。等比缩小是安全的,只压缩字符水平宽度则会让汉字变瘦、英文变窄。变窄的字符在低分辨率机器上会因点阵取整而缺笔画,看起来像「打印发虚」,实际是缩放造成的。
- 缩放会连带影响与它同组的对象。部分软件支持把同一组内的对象联动缩放,本意是保持版面比例,副作用是条码也被一起缩放。条码一旦被非整数倍缩放,窄条宽度不再是整数个点,识读率立刻下降。
因此缩放的定位应当是最后手段,而不是默认手段。优先级顺序是:先减少要打的字数(拆字段、缩写到二维码里)→ 再调宽度与换行 → 再换更大的标签规格 → 最后才考虑缩字号,并且必须设下限、必须打样验收。
七、截断为什么最像「正常打印」
四类现象里,截断最危险。它不报警、不提示、不留痕迹,剩下的内容排版完好、位置正确,看上去就是一张合格的标签。等到有人拿实物与系统里的数据逐字对照,可能已经发出去几千张。
三个最常见的截断来源:
- 对象仍是单行类型。软件里新建文本对象时默认往往是单行,后来内容变长了,没人回头改对象类型,超出的部分就按单行规则丢弃。这一条在所有软件里都成立,且最不容易被发现。
- 行数上限设成了 1 或偏小。指令层的换行块参数里有一个「最大行数」,很多模板从别处拷来时这个值是 1,等于开着换行但只允许一行,效果与截断相同。
- 软件里选了「忽略过剩内容」这一档。这一档的本意是保护版面,实际效果就是静默丢弃,且软件通常不做任何提示。
判定方法只有一条:逐字比对,不要看「像不像」。取生产数据里最长的那一条打一张,把它与源数据一个字符一个字符地对。重点看三处:末尾的批次号后几位、有效期、规格里的括号与单位。这三处一旦被吃掉,标签看起来完全正常,但数据已经错了。
八、指令层的硬边界:ZPL 会折行,TSPL 的 TEXT 不会
当标签由软件导出指令、或由业务系统直接拼指令发送时,最终行为由指令决定。这两套最常见的指令体系,在「换行」这件事上完全相反,混用必然出问题。
- ZPL 体系(Zebra 及兼容机型):自动换行只有一个指令,
^FB,语法是^FB宽度,行数,行距,对齐,缩进,宽度单位是点。三个必须记住的细节:一是行数默认是 1,只写宽度不写行数等于不换行;二是宽度写 0 或小于一个字符宽度时,这段文字根本不会印出来;三是超出设定行数的余量,不同固件的处理不一致——有的直接丢弃,有的把余量压到最后一行叠印,两种都不报错。所以行数必须按最长数据自己算,不能指望机器提示。字段数据里用&可以强制断行,这个断行同样计入行数上限。 - TSPL 体系(TSC 及兼容机型):
TEXT指令不做任何换行,超出可用宽度的部分不会打印,官方手册对此有明确说明。要折行必须改用BLOCK指令,格式是BLOCK x,y,宽度,高度,"字体",旋转,横向倍率,纵向倍率,"内容",宽度与高度都是硬边界,超出的行同样不会印出。也就是说,同样一段文字,走TEXT会截断,走BLOCK会折行——换一种发送方式,现象就变了。
换算关系在这里必须记牢:203 dpi 下 1 毫米约合 8 个点,300 dpi 下约合 12 个点,600 dpi 下约合 24 个点。用点为单位写宽度时,一旦换了机器或改了分辨率,同一个数值代表的物理宽度就全变了,原本刚好放得下的行会突然放不下。这类「换机器之后开始少字」的案例,用这一条就能解释。

SATO CT4-LX-203DPI:这类带屏桌面机在面板与指令层都设了硬边界,软件里排得再漂亮,超出边界的内容一样不会印出来
九、九步排查顺序:从样张到参数,不返工
- 打最长数据,不打样例。从生产数据里挑最长的那一条,单独打一张。这一步决定后面所有判断是否有效。
- 与源数据逐字比对。记录少了几个字符、行数变化、字号是否变小,据此归到第一节的四类之一。
- 看对象类型。是单行对象还是段落对象。单行对象基本注定会截断,先改类型。
- 看换行的宽度来源。宽度取的是对象框、段落宽度还是条码宽度。若设成「随内容自动」,换行不会发生。
- 看行数上限与对象高度。三者(宽度、行数、高度)必须能容纳最长数据折行后的结果,缺一个就会退回截断。
- 看缩放开关与字号下限。若开着缩放,先记下最小字号,再判断这个字号在实际阅读距离下是否可读。
- 看驱动有没有覆盖。打印首选项里的页面缩放、字体以图形方式发送这两项,会把软件里的设置改掉。
- 抓指令原文核对。走指令发送时,把实际发出的内容抓出来,确认宽度、行数、字体三个值。走驱动时打印一张配置页对照。
- 固化。把最长数据做成验收样张,与模板一起存档,并在模板说明里注明适用机型、分辨率、字体、字号与行数上限。
这套顺序里最容易被跳过的是第 1 步和第 9 步。跳过第 1 步,后面全部建立在错误的样张上;跳过第 9 步,同样的问题会在换人、换批、换版本之后原样复发。
十、三张验收样张,把这类问题挡在投产之前
与其等客户投诉,不如在模板交付时固定打三张样张。三张都过,这类问题基本不会再出现。
- 最长数据样张:用生产数据里最长的那条打,检查末尾字符是否完整、行数是否在预留范围内、下方对象是否被压。
- 最短数据样张:用最短的那条打,检查是否出现大片空洞、末行孤字、或者因为缩放开着而字号被放大到突兀。
- 边界样张:专门构造一条含全角汉字、半角字母、括号、斜杠与空格的混合数据,检查断行位置是否合理、字符有没有被拦腰切开。
三张样张与模板一起存档,并在模板说明里写清四件事:适用机型与分辨率、使用的字体与字号、允许的最大行数、以及这张标签的字符容量上限。做到这一步,模板才算真正交付,而不是「在我电脑上能用」。
回到最开始那四种现象:字数少是截断,行数多是换行,字变小是缩放,字被切是溢出。四者对应四个不同位置的开关,而判断它们是否够用的依据只有一个——最长的那条真实数据,而不是设计时敲进去的样例。字符容量可以算:可用宽度换成点,除以单个字符占的点数,商就是一行能放几个字。算出来放不下,就该改设计,而不是在软件里反复试。
若问题出在条码下方那串可读数字,请转 856 号文章;若内容是在标签边缘整块消失、或与碳带节省功能相关,请转 859 号文章;若是换机器后整份版面被整体缩放,请转 857 号文章。需要核对具体机型的规格、耗材规格与适用软件,可前往 博尔杰PTS MROer 的品牌专区与全部分类页。文中提到的软件功能名称、指令参数与规格数值,均以软件帮助、随机手册与产品页为准。
常见问题
1. 软件里显示两行,打出来只有一行,末尾还没了,是什么原因?
两个原因叠加的可能性最大:对象是单行类型,且发送方式不支持换行。软件预览是软件自己排的,能看到两行;发送时若把文字当一整串交给机器,而指令层没有换行参数,机器就只印它能印下的部分。先改对象类型为段落或多行,再确认指令层是否带换行块参数。
2. 同一份模板,只有最长的那些数据少字,短数据完全正常,是机器不稳定吗?
不是。这正是「容量刚好卡在边界」的典型表现:短数据在容量之内,长数据越界,越界部分按当前设置被丢弃。机器在这件事上没有任何判断能力,它只执行收到的内容。判断办法是取最长数据与最短数据各打一张对照,若差异只体现在长度上,就确定是容量问题。
3. 自动换行已经开了,为什么文字还是压在条码上?
因为换行只负责「折成几行」,不负责「折完之后往哪里放」。折行后总高增加,而对象高度或下方对象的位置没有跟着调整,第三行自然落到条码上。需要同时处理三件事:给文本对象预留最大行数的高度、把下方对象按最坏情况下移、必要时把两者编成一组。
4. 自动缩小字号开了以后,字小到看不清,怎么权衡?
先设字号下限,再决定是否保留这个功能。下限的作用是让放不下的内容暴露出来,而不是继续缩小。设了下限之后,超长数据会退回截断或溢出,问题就从「悄悄变小」变成「明显出错」,反而更容易被发现。之后按第六节的优先级处理:减字数、调宽度、换规格,最后才动字号。
5. ZPL 里写了换行指令还是不换行,问题出在哪?
先看行数参数。这套指令的行数默认值是 1,只写宽度不写行数,等于开着一个只能放一行的框,效果与截断一样。再看宽度:宽度写 0 或小于一个字符的宽度时,这段文字不会印出来。最后确认这段指令确实在字段数据之前、并且每个字段各自带一条,一条指令只管一个字段。
6. TSPL 里的 TEXT 能不能自动换行?
不能。TEXT 只是把字符串按给定坐标画出来,超出可用宽度的部分不打印,官方手册对此有明确说明。要折行必须改用 BLOCK 指令,它带宽度与高度两个参数,会在这个框内自动折行,且超出高度的行同样不会印出。同一个内容走 TEXT 与走 BLOCK,结果完全不同,切换发送方式时要重新验收。
7. 15×5 这么小的标签,一行最多能打几个汉字?
按 203 dpi、24 点中文字体、左右各留 2 毫米边距估算,可用宽度约 88 点,每字 24 点,一行约 3 个字,第二行已经放不下(标签总高 5 毫米,一行 24 点的字本身就占 3 毫米)。这类规格只能靠减字号、拆字段或换更大规格解决。作为对照,60 毫米宽的标签在同样条件下约可排 19 个汉字。
8. 中文与英文混排时,换行位置总是不理想,能控制吗?
只能间接控制。中文按字断行,英文按空格断词,混排时断点落点取决于当时的宽度与内容。可控的手段有三个:调对象宽度让断点前移、用强制断行符在语义边界处主动断开、把中英文分成两个对象分别排版。不能指望软件在两种断法之间做出「语义上最优」的选择。
9. 换了一台机器,同样的模板换行位置变了,需要重画吗?
通常不需要重画,但要重新核对三个值:分辨率、字号、行数上限。分辨率变了会让以点为单位的宽度代表不同的物理长度,同样一行字在新机器上可能放不下;字号若用的是机器内置点阵字体,不同机型的内置字体尺寸也不一样。核对完这三项,多数情况只需微调宽度。
10. 有没有办法一次设置好,以后不再出这类问题?
四件事可以做到:一是模板交付时打三张验收样张(最长、最短、混合),与模板一起存档;二是模板说明里写清适用机型、分辨率、字体、字号、最大行数;三是把字符容量上限算出来写在说明里,让后续改内容的人知道边界在哪;四是换机器、换软件版本、换发送方式之后,重打一次最长数据样张。这四条能拦下绝大多数复发。
速查清单
- 打最长的那条真实数据,不打样例。
- 与源数据逐字比对:字数少→截断;行数多→换行;字变小→缩放;字被切→溢出。
- 确认对象类型是单行还是段落,单行对象先改类型。
- 确认换行的宽度来源,不能是「随内容自动」。
- 宽度、行数、对象高度三者一起核对,不能只调一个。
- 缩放必须设字号下限,且不与换行同时开。
- 算字符容量:可用宽度点数 ÷ 单字点数 = 一行字数。
- 抓指令原文,核对宽度、行数、字体三个值。
- 三张验收样张存档,模板说明写明机型、分辨率、字号、行数上限。
相关支持文章
- 条码可读字符缺失与字体比例失真排查:条码下方那串可读数字的缺字、变扁与比例问题。
- 碳带节省模式与打印区域设置异常排查:内容在标签边缘整块消失、节带判定与可打印区域。
- 同一模板换机型后输出尺寸不一致排查:驱动与页面级的整体缩放。
- 打印预览与实际输出不一致的单位与分辨率换算排查:毫米、英寸与 dpi 的换算。
- Brady标签多排多列打印只出一列与内容串列排查:多列版面的列宽与间距。
- Brady Workstation 模板偏移与字体丢失排查:字体缺失与版式错乱。
- Brady B-593标签纵向打印偏移与起始点校准排查:内容完整但整体偏上偏下。


