Specifications

ZB64 Encoding and Compression
Introduction to B64 and Z64
368
45541L-004 Rev. A ZPL II Programming Guide 9/15/06
Introduction to B64 and Z64
The first encoding, known as B64, encodes the data using the MIME Base64 scheme. Base64
is used to encode e-mail attachments and is specifically designed to address communications
path limitations, such as control characters and 7-bit data links. It encodes the data using only
the printable ASCII characters:
With the use of ZPL, this has the added benefit of avoiding the caret (^) and tilde (~)
characters. Base64 encodes six bits to the byte, for an expansion of 33 percent over the un-
enclosed data. This is much better than the 100 percent expansion given by the existing ASCII
hexadecimal encoding.
The second encoding, known as Z64, first compresses the data using the LZ77 algorithm to
reduce its size. (This algorithm is used by the PKWARE
®
compression program PKZIP™ and
is integral to the PNG graphics format.) The compressed data is then encoded using the MIME
Base64 scheme as described above.
A CRC is calculated across the Base64-encoded data. If the CRC-check fails or the download
is aborted, the object can be invalidated by the printer.
The robust encodings can be piggybacked on the existing download commands with full
backward compatibility. This is done by prefacing the new encodings with a header that
uniquely identifies them. The download routines in the printer firmware can key-off the header
to determine whether the data is in the old ASCII hexadecimal encoding or one of the new
encodings. This allows existing downloadable objects to be used in their present format, while
new objects can be created using the same download commands with the new encodings for
increased integrity and reduced download times.
For easy reference, B64 and Z64 are referred to as ZB64. In any reference to the ZB64
encoding, assume that both Base64-only (B64) and LZ77/Base64 (Z64) encodings are
accepted.
Example • The following is an example of an existing download command using the new
encoding:
~DTARIAL,59494,:Z64:H4sICMB8+DMAC0FSSUFMLlRURgDsmnd8VEW7x5+ZO
edsyibZNNJhlyWhbEJIwYSwJDGNkmwghJIgJYEEEhQIPSggKAjEAiIiVaSoIJ
YNBAkIGgGxUBVUUCGU0JQSC0WFnPvbE+SF18+9H+8f973X+3Jm93umzzNznvn
NSSFGRJ6ARAVZvXK7XDaXLyTiR5B7ontuZPQ824I5RKIa6ew+aba8+pU1rVDZ
iciv
[multiple lines deleted]
/O6DU5wZ7ie2+g4xzDPwCpwm3nqW2GAPcdclxF4fIP66jHjncmKvKzh/ZUNCx
l9/QQx2HXHYB4m/PkQcdCdx2G7OYt+mszkMh4iZxoifvkh89BFipo87kwD/Bf
/dOcycAAEA:a1b2