我必须通过 C# 和 Zebra .Net SDK 将自定义字体文件发送到 Zebra MZ 220 打印机。该 SDK 提供了一个 SendFile() 方法,它可以完美地与模板文件一起使用,但是每当我发送一个字体文件时,打印机就会在接收它时开始打印出文件。Zebra Software Label Vista 有一个菜单选项发送字体,但我必须以编程方式进行。
有谁知道如何将字体文件发送到打印机?
非常感谢你
twickl
我必须通过 C# 和 Zebra .Net SDK 将自定义字体文件发送到 Zebra MZ 220 打印机。该 SDK 提供了一个 SendFile() 方法,它可以完美地与模板文件一起使用,但是每当我发送一个字体文件时,打印机就会在接收它时开始打印出文件。Zebra Software Label Vista 有一个菜单选项发送字体,但我必须以编程方式进行。
有谁知道如何将字体文件发送到打印机?
非常感谢你
twickl
我使用 LP 2824 使用 EPL 自动打印标签,并使用 Microsoft 的RawPrinterHelper类,并从此处修复错误。该类有一个 SendFileToPrinter 方法,可能值得一试(我没有使用它,所以我不知道它是否适用于字体)
您需要将文件包装在一个特殊的下载命令中,以便打印机存储该文件。
该命令在“CISDFCRC16”下的ZPL 指南中有详细说明。
命令的基本格式 -
! CISDFCRC16
<crc> // 4 digit hex CRC. Enter 0000 to turn off CRC check.
<filename> // file name with extension. 8.3 filenames only.
<size> // eight digit hex file size in bytes.
<checksum> // four digit hex checksum. Enter 0000 to turn off checksum validation.
<data> // Binary data to store
这将允许您将文件存储在打印机的文件系统上。
注意:打印机无法识别典型的 .ttf 文件。您需要使用 Label Vista 将字体转换为 .CPF 文件,然后使用此命令将其发送下来。
我想补充詹姆斯的答案。他确实是正确的'!CISDFCRC16' 调用确实有效。
我最初在让它工作时遇到了很多麻烦,因为我实现了自己的 CRC 和校验和逻辑。
将文件上传到打印机时,我总是从打印机中收到“校验和失败”消息。即使在实现了 CPCL 编程手册中提供给我们的 CRC/校验和逻辑之后。
我设法让它工作的唯一方法是使用 Zebra 的 CpclCrcHeader 类来计算 CRC,使用CpclCrcHeader.getCRC16ForCertificateFilesOnly(byteArray).toUpperCase()和使用CpclCrcHeader.getWCheckSum( byteArray).toUpperCase() 的校验和
希望这可以帮助任何想要管理其 Zebra 打印机上所有文件的人。