Как напечатать логотип на этикетках с помощью принтера Zebra и отправить на него инструкции ZPL

Я хотел бы отправить инструкции ZPL на принтер Zebra (пока GK420t). Я печатаю этикетки размером 50 мм x 20 мм. Я хотел бы, чтобы логотип (маленькое изображение размером ~ 5 мм x 5 мм) был напечатан в верхнем левом углу этикетки.

Я хотел бы знать шаги, которые я должен выполнить, чтобы сделать это.

Я читал и пробовал несколько вещей из руководства ZPL, но я не очень понимаю, как это работает, и не смог найти работающий пример.

Похоже, мне нужно сначала "загрузить" изображение в принтер (в так называемую "область памяти"/DRAM?), А затем распечатать его.

.GRF Расширение файла упоминается много раз в руководстве. Я не смог найти инструмент для преобразования изображения.PNG или.BMP в файл.GRF. Я прочитал, что файл.GRF - это ASCII HEX-представление графического изображения... но это не помогло мне выполнить работу.

Я мог напечатать логотип на этикетках, используя "Утилиты установки Zebra", "Загрузив шрифты и графику", выбрав любой доступный файл.MMF, добавив изображение.BMP, загрузив его [в принтер] и распечатав тестовую страницу. Но до сих пор я не мог сделать это, используя инструкции ZPL.

Мне также интересно, какие размеры лучше использовать, учитывая тот факт, что мне нужно маленькое изображение ~ 5 х 5 мм для печати на этикетках. Изображение, которое я напечатал, представляет собой изображение размером 40 на 40 пикселей. Кроме того, если мне нужно сделать файл.GRF из исходного изображения, каким должен быть тип этого файла (.BMP, .PNG, .JPG)?

Можете ли вы посоветовать мне, как действовать?

9 ответов

Похоже, у вас есть какой-то существующий код ZPL, и все, что вы хотите сделать, это добавить к нему изображение.

Если это так, то, вероятно, самое простое решение - перейти в онлайн-средство просмотра ZPL Labelary, вставить свой ZPL в средство просмотра, нажать "Добавить изображение" и загрузить изображение, которое вы хотите добавить в ZPL.

Это должно изменить ваш ZPL, добавив необходимые графические команды ZPL, а затем вы можете изменить положение и т. Д.

Вот еще один вариант: я создал свой собственный конвертер изображений в.GRF на python. Не стесняйтесь использовать его.

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")

Просто установите ZebraDesigner, создайте пустую метку, вставьте объект изображения в шаблон и добавьте необходимое изображение логотипа.

Напечатайте в файл этот ярлык (файл *.prn) и откройте недавно созданный файл с помощью Notepad ++ (MS Notepad разрушит данные, если открыть и сохранить с помощью). Найдите огромную строку, казалось бы, случайных символов, и там будут данные вашего изображения. Будьте осторожны, чтобы не потерять ни один из этих символов, включая контрольные, поскольку вся строка является текстовым представлением вашего изображения (как если бы оно было base64).

Совет0: Всегда имейте под рукой Руководство по программированию ZPLII, вам нужно / нужно проверить, отправлял ли ZebraDesigner изображение в память или прямо в буфер принтера.

Совет 1: Прежде чем добавить логотип на этикетку и получить текст, подготовьте изображение, сделав его в оттенках серого (не забудьте проверить конфигурацию дизеринга принтера!) Или, в моем случае, черно-белое изображение (наилучший результат, IMHO). Изображение может быть цветным, ZebraDesigner заставит его работать на принтере, преобразовывая изображение в оттенки серого перед преобразованием в команды и текст.

Я создал PHP-скрипт для преобразования изображений PNG в.GRF, похожий на image2grf.py Джоша Мейберри: https://gist.github.com/thomascube/9651d6fa916124a9c52cb0d4262f2c3f

Он использует PHP-функцию изображения GD и поэтому может работать со всеми форматами файлов, которые может открыть GD. С небольшими изменениями можно использовать расширение Imagick, но с GD производительность кажется лучше.

Сегодня мне снова пришлось это выяснять. В коде ZPL вы можете вывести графические байты для каждой отдельной этикетки (что означает много дополнительных данных, когда вы печатаете несколько тысяч этикеток), или вы можете сначала определить изображение, а затем ссылаться на него.

Я использовал онлайн-просмотрщик ZPL, чтобы сэкономить на количестве напечатанных этикеток при тестировании. Я использовал:http://staging.advanced-technology-group.com/ и вот еще один, который делает то же самое:http://labelary.com/viewer.html

У них (в настоящее время) есть функция «добавить изображение». Это переводит png в формат GRF, с которым работает ZPL (см. другие ответы, если вам нужно сгенерировать эти байты самостоятельно).

Вывод байтов для каждой метки

Использование функции «Добавить изображение» генерирует команду и графические байты, которые выглядят так:

^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

Используйте программное обеспечение ZebraNet Bridge Enterprise для преобразования файлов формата BMP в GRF.

Я согласен с Кайо. Лучший способ сделать это - с помощью Руководства программиста ZPLII. Это толстый текст, но он дает вам правильную информацию. Вот ссылка на документ PDF. https://www.zebra.com/content/dam/zebra/manuals/en-us/software/zpl-zbi2-pm-en.pdf С уважением, Марко. http://exceet-card-shop.nl/

Перейдите в Object ==> Изображение, и ваш курсор изменится на что-то еще.. когда он изменится, перейдите и нажмите на рабочую область и диалоговое окно iwll apear... так что там выберите изображение, чтобы вы могли видеть изображение, которое вы хотите хочу печатать на принтере Я использую GT800, так что для меня мне очень хотелось, что это поможет вам

Попробуйте проект sharpzebra в кодпроекте. Тестовая программа, являющаяся частью проекта, печатает графическое изображение, и я знаю, что это работает, по крайней мере, на ZM400

Другие вопросы по тегам