JavaScript 中使用 ESC/POS 的 EAN-13 没有显示下面的数字?

EAN-13 in JavaScript using ESC/POS is not showing the digits below?

我正在尝试使用 ESC/POS 命令将 JavaScript 应用程序中的 EAN-13 条码打印到热敏打印机 GS k m d1...dk NUL

根据应用程序规范,所有命令都必须通过仅使用 HEX 的蓝牙插件传送。

目前,我可以打印条码,但它不显示下面的数字,而且所有条码线的高度都相同。我的印象是 EAN-13 将数字分成 3 个部分,中间有不同高度的线。

样本条码: 6921426623090

命令: 0x1D,0x77,3,0x1D,0x68,160,0x1D,0x6B,2,0x36,0x39,0x30,0x31,0x30,0x32,0x38,0x30,0x37,0x35,0x38,0x33,0x31,00,0x0a,0x0a

命令解释:

0x1D,0x77,3,   // barcode width
0x1D,0x68,160, // barcode height
0x1D,0x6B,2,0x36,0x39,0x30,0x31,0x30,0x32,0x38,0x30,0x37,0x35,0x38,0x33,0x31,00, // ean-13 barcode: GS k m d1...dkNUL
0x0a,0x0a // space after

我非常有信心它与我的实施有关 GSkmd1...dkNUL:

GS // 0x01D
k  // 0x6B
m  // 2
d1...dk // barcode translated to hex: 0x36,0x39,0x30,0x31,0x30,0x32,0x38,0x30,0x37,0x35,0x38,0x33,0x31
NUL // 00

当前打印输出:

所需的打印输出:

对于如何根据提供的图像打印条形码的任何反馈,我将不胜感激 - 下面的数字和中间不同高度的线条。

事实证明,使用 ESC/POSprint barcode 命令无法打印 (non-flat) 个 EAN-13 条形码。唯一的选择是通过 ESC/POS.

print image 命令打印 non-flat EAN-13 的图像

这些字符称为 HRI(人类可读解释)。

条码为not-flat表示HRI叠加在条码上打印。

如果是这样,用Bitmap创建一个图像并打印它会有效。

除此之外,我没试过,不知道可不可以,但可以想象使用页面模式打印如下。

  • 进入页面模式
  • 指定打印范围
  • 打印条码
  • 调整打印开始位置
  • 用空白位图覆盖部分打印条码
  • 调整打印开始位置
  • 在空白区域打印条码字符串
  • 打印页面模式缓冲区并退出页面模式

但是你真的需要 non-flat 条形码来打印这样的布局吗?

如果不需要使用non-flat条码,您可以通过以下方法同时打印条码和条码字符串。

请参考以下
对应页面为日文
GS H
GS f

GS H n : Select HRI 字符打印位置
如果在条形码下方打印字符,则 n 为 0x02 或 0x32。

0x1D 0x48 0x02 或 0x32

GS f n : Select HRI 字符字体
当您要更改条形码打印字符的字体时指定此项。
n 的值会因打印机而异。

0x1D 0x66 0x00-0x04 或 0x30-0x34 或 0x61-0x62