Kurs ZPL: polecenia i przykłady
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.
- Przyda się doCzytania odziedziczonego ZPL, szukania błędu w etykiecie albo wysyłania etykiet z backendu.
- Czego potrzebujeszDo drukowania niczego. Darmowy kreator etykiet napisze ZPL za ciebie.
- Warto wiedziećZPL liczy w punktach, więc ten sam kod drukuje się inaczej przy każdym DPI.
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:
- Gdy coś pójdzie nie tak (rozmazany kod kreskowy, ucięty tekst, brakujące pole), zwykle da się to przypisać jednej konkretnej komendzie.
- Jeśli budujesz jakąkolwiek automatyzację w backendzie, na przykład kolejkę wydruku, integrację z ERP albo skrypt do realizacji zamówień, w końcu skopiujesz ZPL z edytora i wyślesz go z własnego kodu. Dobrze wiedzieć, co jest w tym ciągu znakó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:
^FO50,50to Field Origin. Ustawia pozycję następnego elementu, w punktach od lewego górnego rogu. Czyli50,50oznacza 50 punktów w prawo i 50 punktów w dół.^A0N,36,36wybiera wbudowaną czcionkę: czcionka 0, bez obrotu, 36 punktów wysokości i 36 punktów szerokości. Traktuj to jak wybór czcionki i rozmiaru.^FDto Field Data, a po nim tekst, który chcesz wydrukować.^FS, czyli Field Separator, kończy pole.
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:
- 203 DPI: 1 cal to 203 punkty. Etykieta o szerokości 4 cali ma 812 punktów szerokości.
- 300 DPI: 1 cal to 300 punktów. Etykieta o szerokości 4 cali ma 1200 punktów szerokości.
- 600 DPI: 1 cal to 600 punktów. Etykieta o szerokości 4 cali ma 2400 punktów szerokości.
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 |
|---|---|
| ^XA | Początek etykiety. Zawsze na samym początku. |
| ^XZ | Koniec etykiety. Drukarka drukuje, gdy to zobaczy. |
| ^PW n | Szerokość wydruku w punktach. Opcjonalna, domyślnie szerokość etykiety załadowanej w drukarce. |
| ^LL n | Długość etykiety w punktach. To samo dla wysokości. |
| ^PQ n | Print Quantity (liczba wydruków). ^PQ3 oznacza „wydrukuj 3 kopie tej etykiety”. |
| ^FO x,y | Field Origin. Gdzie umieścić następny element. |
| ^FD text | Field Data. Właściwa zawartość pola tekstowego albo kodu kreskowego. |
| ^FS | Field Separator. „Skończyłem definiować to pole”. |
| ^A0N,h,w | Użyj skalowalnej czcionki 0, obrót N (normalny), wysokość h punktów, szerokość w punktów. |
| ^BC | Kod kreskowy Code 128. |
| ^BQ | Kod QR. |
| ^BY w,r,h | Ustawia domyślne wartości kodu kreskowego (szerokość modułu, proporcja, wysokość). |
| ^GFA | Graphic Field, ASCII. Najpotężniejsza komenda. Osadza 1-bitową bitmapę bezpośrednio w ZPL. |
| ^MD n | Media Darkness (zaczernienie). Od 0 do 30. Decyduje, jak ciemny jest wydruk. (Wyżej = ciemniej.) |
| ^PR n | Print Rate (prędkość druku). Ile cali na sekundę przesuwa się głowica. Niżej = ostrzej, wyżej = szybciej. |
| ~JR | Reset 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
^XAzaczyna etykietę.^MD12ustawia zaczernienie na 12, rozsądną średnią wartość dla nowej taśmy.^PR4drukuje z prędkością 4 cali na sekundę.^PW812ustawia szerokość wydruku na 812 punktów, czyli 4 cale przy 203 DPI.^PQ1drukuje 1 kopię.^FO0,0umieszcza następne pole w lewym górnym rogu.^GFA,121800,121800,150,…osadza bitmapę o rozmiarze 121 800 bajtów, po 150 bajtów na wiersz, jako całą etykietę.^FSzamyka pole.^XZuruchamia druk.
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.
^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ć:
- Otwórz https://app.mylabelmaker.com. Bez rejestracji.
- Wybierz rozmiar i wstaw tekst, kody kreskowe, kody QR albo obrazy, czyli to, czego potrzebuje etykieta.
- Otwórz ustawienia drukarki (ikona zębatki) i użyj Auto-detect (wykryj automatycznie), żeby etykieta renderowała się w faktycznym DPI twojej drukarki.
- Kliknij Options w prawym górnym rogu edytora, a potem Copy ZPL (kopiuj ZPL). Cały ciąg
^XA … ^XZdla bieżącej etykiety trafia do schowka. - Wklej go tam, gdzie potrzebujesz: do pliku tekstowego, na serwer wydruku, do zapytania do API realizacji zamówień, do wiadomości na czacie.
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 … ^XZobejmuje każdą etykietę.^FO x,yustawia pozycję następnego pola.^A0N,h,wwybiera czcionkę i rozmiar.^FD … ^FSzawiera dane pola i je kończy.^BCto Code 128, a^BQto QR.^GFAosadza bitmapę.^PQto liczba kopii,^MDto zaczernienie, a^PRto 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