Kurs ZPL: komendy, przykłady i podgląd. Zobacz też darmowy podgląd ZPL online.

Język, którym naprawdę mówi Zebra. Projektuj w przeglądarce, potem skopiuj ZPL.

Kurs ZPL: polecenia i przykłady

Opublikowano: · 9 min czytania · Materiał źródłowy

Ten kurs ZPL omawia garść komend, które stoją za każdą etykietą Zebry: ^XA i ^XZ na początek i koniec, ^FO do umieszczenia pola, ^A0 do wyboru czcionki, ^FD i ^FS do danych oraz ^BC i ^BQ do kodów kreskowych. Do każdej jest przykład, który wkleisz do podglądu.

Potrzebujesz podglądu? Otwórz darmowy podgląd ZPL i wklej swój kod ^XA. Żeby najpierw zaprojektować etykietę, użyj darmowego kreatora etykiet. Bez rejestracji.

Czym jest ZPL

Każda etykieta, którą drukuje Zebra, to mały program w ZPL, czyli Zebra Programming Language.

Drukarka nie przyjmuje plików PDF ani Word. Przyjmuje komendy ZPL, jedną po drugiej, aż dojdzie do znacznika, że etykieta jest gotowa. Wtedy głowica drukuje.

Nie musisz znać ZPL, żeby drukować. Darmowy kreator etykiet napisze go za ciebie. Podstawy i tak się przydają, z dwóch powodów:

Na koniec będziesz umieć spojrzeć na ciąg ZPL i z grubsza zobaczyć etykietę, którą tworzy. Ostatnia część pokazuje, jak działa Copy ZPL, żebyś mógł podpiąć go do własnego procesu.

Budowa etykiety ZPL

Najprostsza możliwa etykieta ZPL wygląda tak:

// Start a label
^XA

// Move to position (50, 50) and print "Hello World"
^FO50,50^A0N,36,36^FDHello World^FS

// End the label, fire the printer
^XZ

Każda etykieta, nieważne jak złożona, zaczyna się od ^XA i kończy na ^XZ. Wszystko pomiędzy to ciąg komend.

Każda komenda to daszek (^) i dwie litery, które ją nazywają, plus opcjonalne parametry rozdzielone przecinkami.

Przykład używa absolutnego minimum:

Punkty, DPI i dlaczego współrzędne wydają się dziwne

Wszystkie współrzędne i rozmiary w ZPL są w punktach, czyli w fizycznej rozdzielczości głowicy drukującej. Trzy poziomy DPI obejmują prawie wszystko:

Brzmi jak szczegół, ale zmienia wydruk. Ten sam ciąg ZPL ląduje inaczej na drukarkach o różnym DPI.

^FO100,100 na drukarce 203 DPI umieszcza pole około pół cala od krawędzi. Na drukarce 600 DPI ta sama komenda umieszcza je około 0.17 cala od krawędzi. ZPL nie wie, czym jest cal. Wszystko to punkty.

Dlatego mylabelmaker śledzi DPI aktywnej drukarki i renderuje w jej natywnej rozdzielczości. Całą historię znajdziesz w poradniku dlaczego Zebra drukuje nieostro przy 300 DPI.

Komendy ZPL, które zobaczysz najczęściej

Komenda Co robi
^XAPoczątek etykiety. Zawsze na samym początku.
^XZKoniec etykiety. Drukarka drukuje, gdy to zobaczy.
^PW nSzerokość wydruku w punktach. Opcjonalna, domyślnie szerokość etykiety załadowanej w drukarce.
^LL nDługość etykiety w punktach. To samo dla wysokości.
^PQ nPrint Quantity (liczba wydruków). ^PQ3 oznacza „wydrukuj 3 kopie tej etykiety”.
^FO x,yField Origin. Gdzie umieścić następny element.
^FD textField Data. Właściwa zawartość pola tekstowego albo kodu kreskowego.
^FSField Separator. „Skończyłem definiować to pole”.
^A0N,h,wUżyj skalowalnej czcionki 0, obrót N (normalny), wysokość h punktów, szerokość w punktów.
^BCKod kreskowy Code 128.
^BQKod QR.
^BY w,r,hUstawia domyślne wartości kodu kreskowego (szerokość modułu, proporcja, wysokość).
^GFAGraphic Field, ASCII. Najpotężniejsza komenda. Osadza 1-bitową bitmapę bezpośrednio w ZPL.
^MD nMedia Darkness (zaczernienie). Od 0 do 30. Decyduje, jak ciemny jest wydruk. (Wyżej = ciemniej.)
^PR nPrint Rate (prędkość druku). Ile cali na sekundę przesuwa się głowica. Niżej = ostrzej, wyżej = szybciej.
~JRReset drukarki (rzadko potrzebny).

Same te komendy wystarczą, żeby ręcznie napisać całą etykietę. Mała etykieta produktu z nazwą, ceną i kodem kreskowym to mniej więcej dziesięć linijek.

Wklej krótkie zadanie i podejrzyj ZPL w przeglądarce, żeby sprawdzić ^FO, ^A, ^BC albo ^BQ przed drukiem.

Przykład ZPL, linijka po linijce

Oto pełniejsza etykieta, taka, jaką mylabelmaker tworzy, gdy projektujesz etykietę wysyłkową:

^XA
^MD12
^PR4
^PW812
^PQ1
^FO0,0
^GFA,121800,121800,150,[hex bitmap data omitted]^FS
^XZ

To ^GFA to domyślne podejście mylabelmaker. Renderuje cały obszar roboczy (tekst, kody kreskowe, QR, kształty, obrazy) do jednej bitmapy w natywnym DPI drukarki, a potem wysyła ją jako jedno pole graficzne.

To najpewniejszy sposób, żeby wydrukowana etykieta wyglądała jak na ekranie, bo omija renderowanie czcionek przez drukarkę, jej generowanie kodów kreskowych i wszelkie dziwactwa firmware'u.

Dobrze wiedzieć: alternatywą jest ZPL, który korzysta z wbudowanych czcionek drukarki (^A0) i jej koderów kodów kreskowych (^BC, ^BQ). Takie ciągi są mniejsze, ale wiążą cię z czcionkami, które drukarka ma załadowane, i z jej własną implementacją kodów kreskowych. Wstępne renderowanie do ^GFA oznacza, że ten sam ZPL daje identyczny wydruk na każdej Zebrze o tym samym DPI.

Jak wyciągnąć ZPL z mylabelmaker

Nie musisz niczego z tego pisać. Edytor generuje ZPL dla wszystkiego, co zaprojektujesz. Żeby go skopiować:

  1. Otwórz https://app.mylabelmaker.com. Bez rejestracji.
  2. Wybierz rozmiar i wstaw tekst, kody kreskowe, kody QR albo obrazy, czyli to, czego potrzebuje etykieta.
  3. Otwórz ustawienia drukarki (ikona zębatki) i użyj Auto-detect (wykryj automatycznie), żeby etykieta renderowała się w faktycznym DPI twojej drukarki.
  4. Kliknij Options w prawym górnym rogu edytora, a potem Copy ZPL (kopiuj ZPL). Cały ciąg ^XA … ^XZ dla bieżącej etykiety trafia do schowka.
  5. Wklej go tam, gdzie potrzebujesz: do pliku tekstowego, na serwer wydruku, do zapytania do API realizacji zamówień, do wiadomości na czacie.
mylabelmaker Save Options ▾ Copy ZPL Export label Import label
Menu Options w nagłówku edytora. Copy ZPL kopiuje do schowka natywny ZPL bieżącej etykiety. Żeby sprawdzić skopiowany kod, zanim trafi do drukarki, wklej go do podglądu ZPL online.

Zmienne i druk seryjny

Gdy drukujesz seryjnie z CSV albo arkusza Google, mylabelmaker generuje osobny ciąg ZPL dla każdego wiersza, z wartościami z tego wiersza, i wysyła je jeden po drugim.

Copy ZPL kopiuje tylko bieżący wiersz. To wygodne, gdy chcesz przetestować jeden wiersz w backendzie, zanim puścisz cały arkusz.

Wysyłaj ZPL z własnego kodu

Gdy masz już ciąg znaków, twój backend może wysłać go na Zebrę przez gniazdo TCP (port 9100 w drukarkach sieciowych), przez lokalne API programu Browser Print albo przez dowolny serwer wydruku Zebry.

Najprostszy przykład, sieciowa ZD621 pod adresem 192.168.1.50:

# Python
import socket
zpl = "^XA^FO50,50^A0N,36,36^FDHello^FS^XZ"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.50", 9100))
s.send(zpl.encode("utf-8"))
s.close()

To cały schemat. W dowolnym języku: otwórz gniazdo TCP do adresu IP drukarki na porcie 9100, zapisz bajty ZPL, zamknij. Drukarka drukuje, gdy tylko zobaczy ^XZ.

Krótka ściągawka do czytania ZPL

Jeśli czytasz ZPL wygenerowany przez kogoś innego, poprzedniego programistę albo odziedziczony system, spotkasz te komendy:

ZPL w skrócie

  • ^XA … ^XZ obejmuje każdą etykietę.
  • ^FO x,y ustawia pozycję następnego pola.
  • ^A0N,h,w wybiera czcionkę i rozmiar.
  • ^FD … ^FS zawiera dane pola i je kończy.
  • ^BC to Code 128, a ^BQ to QR.
  • ^GFA osadza bitmapę.
  • ^PQ to liczba kopii, ^MD to zaczernienie, a ^PR to prędkość.

Wszystko inne to warianty tych komend albo komendy specjalne, na przykład do kodowania RFID, zapytań o stan czy konfiguracji drukarki. Oficjalna dokumentacja ZPL II, darmowy PDF od Zebry, opisuje pełną wersję, jeśli kiedyś będziesz jej potrzebować.

Podsumowanie

ZPL to mały język komend w zwykłym ASCII, który istnieje od lat 90. i nic nie wskazuje, żeby miał zniknąć.

Nie musisz go pisać. Edytor zajmuje się dziwactwami (mapowanie DPI, rasteryzacja czcionek, kodowanie kodów kreskowych, pakowanie bitmap) i wysyła do drukarki czysty ciąg ^XA … ^XZ.

Nie musisz pisać ZPL, ale gdy wiesz, co jest w ciągu znaków, łatwiej znajdziesz błąd.

Przydaje się to też, gdy podłączasz backend albo gdy ktoś pyta, co właściwie robi program do etykiet.

Pytania o ten kurs ZPL

Jakie są podstawowe komendy ZPL?

^XA zaczyna etykietę, a ^XZ ją kończy. ^FO ustawia, gdzie trafia następne pole, ^A0 wybiera czcionkę i rozmiar, ^FD zawiera dane, a ^FS kończy pole. ^BC to kod kreskowy Code 128, a ^BQ to kod QR.

Dlaczego ten sam ZPL drukuje się inaczej na innej Zebrze?

ZPL liczy w punktach, nie w calach. Drukarka 203 DPI ma 203 punkty na cal, a drukarka 600 DPI ma ich 600, więc te same współrzędne lądują w innym miejscu. Dopasuj DPI do drukarki.

Czy muszę znać ZPL, żeby drukować na Zebrze?

Nie. Darmowy kreator etykiet pisze ZPL dla wszystkiego, co zaprojektujesz. Znajomość podstaw pomaga, gdy szukasz błędu w etykiecie albo wysyłasz ZPL z backendu.

Jak skopiować ZPL z mylabelmaker?

Zaprojektuj etykietę, a potem kliknij Options i Copy ZPL. Cały ciąg od ^XA do ^XZ dla bieżącej etykiety trafia do schowka. Gdy masz wczytany arkusz, kopiowany jest bieżący wiersz.

Jak podejrzeć ZPL przed drukiem?

Wklej kod do darmowego podglądu ZPL, a zobaczysz obraz etykiety w przeglądarce. Bez rejestracji.

Pomiń ZPL i zaprojektuj etykietę

Narysuj etykietę w edytorze i ją wydrukuj. ZPL powstaje sam, a w razie potrzeby możesz go skopiować. Bez rejestracji.

Otwórz darmowy kreator etykiet