如何通过.Net SDK将字体文件发送到Zebra打印机(MZ 220)?

时间:2010-06-22 08:38:29

标签: c# compact-framework zebra-printers

我必须通过C#和Zebra .Net SDK将自定义字体文件发送到Zebra MZ 220打印机。该SDK提供了一个SendFile()方法,它可以很好地处理模板文件,但每当我发送一个字体文件时,打印机会在接收文件时开始打印文件。 Zebra Software Label Vista有一个Menu选项Send Font,但我必须以编程方式执行。

有谁知道如何将字体文件发送到打印机?

非常感谢

twickl

3 个答案:

答案 0 :(得分:2)

我使用LP 2824自动使用EPL打印标签并使用了Microsoft的RawPrinterHelper类,并修复了here中的错误。该类有一个SendFileToPrinter方法,可能值得一试(我没有用它,所以我不知道它是否适用于字体)

答案 1 :(得分:2)

您需要将文件包装在特殊的下载命令中,以便打印机存储文件。

该命令详见“CISDFCRC16”下的ZPL Guide

命令的基本格式 -

! 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文件,然后使用此命令将其发送下来。

答案 2 :(得分:1)

我想补充詹姆斯的回答。他确实是正确的'! CISDFCRC16'呼叫确实有效。

因为我实现了自己的CRC和校验和逻辑,所以我最初在使用它时遇到了很多麻烦。

将文件上传到打印机时,我总是收到打印机发出的“Checksum failed”消息。即使在实施CPCL编程手册中给出的CRC /校验和逻辑之后也是如此。

我设法使其工作的唯一方法是使用Zebra的CpclCrcHeader类使用 CpclCrcHeader.getCRC16ForCertificateFilesOnly(byteArray).toUpperCase()计算CRC,并使用计算校验和CpclCrcHeader.getWCheckSum(字节阵列).toUpperCase()

希望能帮助其他任何人想要管理Zebra打印机上的所有文件。