我今天又不得不重新弄清楚这个问题。在ZPL代码中,您可以输出每个单独标签的图形字节(这意味着打印几千张标签时会有大量附加数据),或者您可以先定义图像,然后引用它。
我使用了在线ZPL查看器,以减少测试时打印的标签数量。我使用的网址如下:
http://staging.advanced-technology-group.com/
以下是另一个具有相同功能的网址:
http://labelary.com/viewer.html
这些网站(目前)都具有“添加图像”功能。这将把PNG文件转换成ZPL所使用的GRF格式(如果需要自己生成这些字节,请参考其他答案)。
对于每个标签输出字节
使用“添加图像”功能将生成一个命令和图形字节,看起来像:
^FO50,50^GFA,11118,11118,17,,<lots of data>
您可以调整FO,以便告诉打印机图形的位置。
对于较短的运行/较小的图片/您急需完成,这应该是可以接受的。
下载一次图像,然后引用
这就是我不得不做的事情,所以我需要稍微重新排列一下字节(好玩的双关语?)。
^GF命令代表图形字段:^GFa,b,c,d,数据。
a: A|B (A, non-binary, B = binary)
b: number of bytes transmitted
c: number of bytes comprising the graphic format
d: number of bytes per row
我需要做的是将其重新格式化为~DGR:000.GRF,11118,17,,
,以便我可以使用^XGR:000.GRF,1,1
引用它。打印运行后,我需要再次从内存中删除图形:^ID000.GRF
~DGd:o.x,t,w,data
的属性意义如下:
d: memory destination - R for RAM
o: image name (1-8 alphanumeric chars)
x: filename extension, always GRF
t: number of bytes in the graphic
w: number of bytes per row
所以我把:
^FO50,50^GFA,11118,11118,17,,<data>
转换成了:
~DGR:000.GRF,11118,17,,<data>
这个定义要放在标签定义之前,所以:
~DGR:000.GRF,11118,17,,<data>
^XA (start of label)
...
^FT360,700^XGR:000.GRF,1,1^FS <-- this outputs the graphic
...
^XZ (end of label)
^ID000.GRF