如何使用Zebra打印机在标签上打印徽标并向其发送ZPL指令

时间:2015-03-25 10:44:49

标签: zebra-printers zpl zpl-ii

我想将ZPL指令发送到Zebra打印机(目前为GK420t)。 我正在打印50mm x 20mm标签。 我想在标签的左上角打印一个标识(小~5mm x 5mm图像)。

我想知道我应该遵循的步骤。

我一直在阅读并尝试ZPL手册中的一些内容,但我真的不明白它是如何工作的,也无法找到一个有效的例子。

看起来我必须首先将图像“加载”到打印机中(在所谓的“存储区域”/ DRAM中?)然后打印出来。

手册中多次提到.GRF文件扩展名。 我找不到将.PNG或.BMP图像转换为.GRF文件的工具。 我读到.GRF文件是图形图像的ASCII HEX表示......但它没有帮助我完成工作。

我可以使用“Zebra Setup Utilities”,“下载字体和图形”,选择任何可用的.MMF文件,添加.BMP图片,将其[下载到打印机]并打印测试页面。 但到目前为止,我无法使用ZPL指令。

我也想知道我应该使用的最佳尺寸是什么,因为我需要在标签上打印~5mm x 5mm的小图像。 我打印的图像是40px x 40px图像。 另外,如果我必须从原始图像制作.GRF文件,该文件的类型应该是什么(.BMP,.PNG,.JPG)?

你能告诉我怎么办吗?

6 个答案:

答案 0 :(得分:16)

听起来你有一些现有的ZPL代码,而你想要做的只是添加一个图像。

如果是这种情况,最简单的解决方案可能是转到Labelary online ZPL viewer,将ZPL粘贴到查看器中,点击"添加图片",然后上传图片你想加入ZPL。

这应该通过添加您需要的图像ZPL命令来修改您的ZPL,然后您可以调整位置等。

答案 1 :(得分:3)

这是另一种选择:我在python中创建了自己的.GRF转换器图像。随意使用它。

https://github.com/JoshMayberry/Utilities/blob/master/image2grf.py

from PIL import Image
import re
import numpy as np

def image2grf(filePath, length = None, width = None):
    #Open the image
    image = Image.open(filePath)

    image = image.convert("1") #Ensure that it is black and white image

    #Resize image to desired size
    if ((length != None) and (width != None)):
        size = (length, width)
        image.thumbnail(size, Image.ANTIALIAS)

    #Convert image to binary array
    bitmap = np.asarray(image, dtype = 'int')
    bitmap = np.asarray(bitmap, dtype = 'str').tolist()

    #Convert binary array to binary string
    binaryString = ""
    for row in bitmap:
        #Join the row to the string
        row = "".join(row)

        #Make each pixel square (for some reason it is rectangular)
        binaryString += row
        binaryString += row
        binaryString += row
        binaryString += row

    #Convert binary string to hex string
    hexString = re.sub("0","F",binaryString)
    hexString = re.sub("1","0",hexString)

    #Calculate bytes per row and total bytes
    bytesPerRow = len(bitmap[0]) / 2 
    totalBytes = bytesPerRow * len(bitmap) * 4 #0.5 for each line piece in a line

    #Compose data
    data = "~DGimage," + str(totalBytes) + "," + str(bytesPerRow) + "," + hexString

    #Save image
    fileHandle = open(r"labelPicture.grf", "w")
    fileHandle.write(data)
    fileHandle.close()

if __name__ == '__main__':
    image2grf(r"test.bmp")

答案 2 :(得分:2)

只需安装 ZebraDesigner ,创建空白标签,将图像对象插入模板并添加所需的徽标图像。

打印到文件标签(* .prn文件)并使用 Notepad ++ 打开最近创建的文件(如果打开并保存,MS记事本将破坏数据)。找到一大堆看似随机的字符,并且有你的图像数据。小心不要丢失任何这些字符,包括控制字符,因为整个字符串是图像的文本表示(就像它是base64一样)。

提示0:随时掌握ZPLII程序员指南,您需要/想要检查ZebraDesigner是将图像发送到内存还是直接发送到打印机缓冲区。 / p>

提示1:在将标识添加到标签并获取文本之前,请准备好灰度图像(请记住检查打印机的抖动配置!)或者,在我的情况下,纯黑色和白色(最好的结果恕我直言)。图像可以着色,ZebraDesigner将使其适用于打印机在转换为命令和文本之前将图像转换为灰度。

答案 3 :(得分:0)

尝试codeproject的sharpzebra项目。作为项目一部分的测试程序打印了一个图形,我知道这至少可以在ZM400上实现

答案 4 :(得分:0)

转到对象==>图片和你的光标将改变为别的东西..当它改变时去点击工作区域和一个对话框iwll apear ...所以在那里选择图像,这样你就可以看到想要在打印机上打印的图像我我正在使用GT800,所以对我来说,我确实希望这会对你有所帮助

答案 5 :(得分:0)

我创建了一个PHP脚本,将PNG图像转换为.GRF,类似于Josh Mayberry的image2grf.py: https://gist.github.com/thomascube/9651d6fa916124a9c52cb0d4262f2c3f

它使用PHP的GD映像功能,因此可以处理GD可以打开的所有文件格式。只需进行少量修改,就可以使用Imagick扩展名,但GD的性能似乎更好。