ZPL pentru începători: prima etichetă cu text și cod de bare

Cuprins 10 secțiuni
- Ce este ZPL și de ce îl trimit programele și curierii
- Eticheta completă de 100 × 50 mm
- Pozițiile în puncte, după rezoluție
- Codul de bare Code 128 cu ^BY și ^BC
- Diacriticele cu ^CI28 și un font care le are
- Verificarea înainte de tipărire
- Trimiterea fișierului la imprimantă
- Când eticheta nu iese cum trebuie
- ZPL pe imprimante care nu sunt Zebra
- Lista de verificare pentru primul șablon
Pe scurt
ZPL este limbajul de comenzi al imprimantelor Zebra: o etichetă e un fișier text care începe cu ^XA și se termină cu ^XZ. Între ele, fiecare câmp are o poziție în puncte (^FO), un font (^A0) sau un cod de bare (^BC), datele (^FD) și închiderea (^FS). La 203 dpi, un milimetru are 8 puncte, deci o etichetă de 100 × 50 mm are 800 × 400 de puncte. Fișierul ajunge la imprimantă din Zebra Setup Utilities, prin FTP sau pe portul 9100.
Exemplele de mai jos sunt scrise pentru o imprimantă Zebra de 203 dpi, cu etichete de 100 × 50 mm separate prin spații. Ai nevoie de driverul ZDesigner și de Zebra Setup Utilities instalate, cum sunt descrise în ghidul de configurare a imprimantei Zebra, și de un editor de text, de exemplu Notepad. Toate comenzile folosite aici sunt verificate în ghidul de programare ZPL al Zebra.
Ce este ZPL și de ce îl trimit programele și curierii
ZPL (Zebra Programming Language, în varianta actuală ZPL II) descrie eticheta prin comenzi, nu printr-o imagine. Fiecare comandă începe cu ^ (sau cu ~, la comenzile de control), urmată de una sau două litere și de parametri separați prin virgulă. Imprimanta desenează singură textul cu fonturile din memorie și codurile de bare cu generatoarele din firmware, așa că nimic nu mai trece printr-un driver care micșorează sau mărește o pagină.
Pentru un program, avantajul e mare. Un format ZPL cu câteva câmpuri are câteva sute de octeți, barele codului cad exact pe punctele capului de printare, iar același șablon se refolosește cu alte date la fiecare etichetă. De aceea WMS-urile, programele de gestiune și mulți curieri trimit eticheta direct în ZPL, fie la adresa IP a imprimantei, fie prin driver. Condiția e ca șablonul să fie făcut pentru rezoluția imprimantei; ghidul despre printarea AWB pe imprimanta termică arată unde se cere ieșirea ZPL la curier.
Nu e nevoie să scrii etichetele de mână. ZebraDesigner for Developers, gratuit, generează șabloane ZPL pentru alte programe. Când eticheta iese decalată, fără diacritice sau cu codul tăiat, cineva trebuie totuși să deschidă fișierul și să înțeleagă ce face fiecare rând.
Eticheta completă de 100 × 50 mm
Formatul de mai jos tipărește un titlu cu diacritice, codul articolului, un cod de bare Code 128 și un rând cu raftul și lotul. Copiază-l în Notepad și salvează-l cu extensia .zpl și codificarea UTF-8 (în fereastra Salvare ca, la Codificare).
^XA
^CI28
^PW800
^LL400
^LH0,0
^FO40,30^A0N,40,40^FDMănuși de protecție, mărimea 9^FS
^FO40,85^A0N,28,28^FDCod articol: MP0912-2610^FS
^BY3,3,110
^FO40,135^BCN,110,Y,N,N^FDMP0912-2610^FS
^FO40,320^A0N,28,28^FDRaft B-04, lot 2610^FS
^PQ1
^XZFiecare rând face un singur lucru. Tabelul le ia în ordine, cu valorile din exemplu.
| Comanda | Ce face | În exemplu |
|---|---|---|
| ^XA | începe formatul etichetei | primul rând, obligatoriu |
| ^CI28 | spune imprimantei că textul din ^FD vine în UTF-8 | necesar pentru ă, ș, ț |
| ^PW800 | lățimea de tipărire, în puncte | 800 de puncte = 100 mm la 203 dpi |
| ^LL400 | lungimea etichetei, în puncte | 400 de puncte = 50 mm; contează la rola continuă |
| ^LH0,0 | originea etichetei, punctul 0,0 din colțul din stânga sus | scrisă explicit, ca să nu rămână alta de la un format vechi |
| ^FO40,30 | colțul din stânga sus al câmpului: x de la stânga, y de sus | 5 mm de la margine, 3,75 mm de sus |
| ^A0N,40,40 | fontul 0 (scalabil), orientare normală, înălțime și lățime în puncte | litere de 5 mm |
| ^FD … ^FS | datele câmpului și închiderea lui | câte o pereche pe fiecare câmp |
| ^BY3,3,110 | lățimea modulului, raportul bară lată/îngustă și înălțimea implicită a codului | bara cea mai îngustă are 3 puncte = 0,375 mm |
| ^BCN,110,Y,N,N | cod Code 128: orientare, înălțime, rândul citibil, rândul deasupra, cifra de control UCC | 13,75 mm înălțime, cifrele sub cod |
| ^PQ1 | câte etichete se tipăresc | una, pentru test |
| ^XZ | încheie formatul; la primirea lui, imprimanta tipărește | ultimul rând, obligatoriu |
Ordinea câmpurilor între ^XA și ^XZ nu schimbă locul lor pe etichetă, pentru că fiecare are propriul ^FO. Câteva comenzi au totuși o regulă de poziție: Zebra cere ca ^LH și ^LL să apară înaintea primului ^FS din format, ca să se aplice etichetei curente. Mai e un detaliu din ghid: ^LL se aplică implicit doar rolei continue. Pe etichetele cu spații între ele, lungimea o măsoară imprimanta la calibrare, iar ^LL400 rămâne o valoare de rezervă.
Fontul 0 e fontul scalabil pe care Zebra îl pune pe imprimantele sale, CG Triumvirate Bold Condensed. Primește orice înălțime între 10 și 32.000 de puncte, deci textul nu are trepte fixe ca la fonturile bitmap A–H. Dacă scrii doar înălțimea (^A0N,40), lățimea se calculează după proporțiile fontului. Pentru mai multe rânduri cu același font, poți pune o dată ^CF0,28 la începutul formatului și apoi doar ^FO și ^FD pe fiecare câmp.
Pozițiile în puncte, după rezoluție
Toate distanțele și mărimile din ZPL sunt în puncte ale capului de printare, nu în milimetri. La 203 dpi, capul are 8 puncte pe milimetru. Pentru 300 dpi, ghidul Zebra dă la comanda ^LH 11,8 puncte pe milimetru (300 împărțit la 25,4), dar fișele imprimantelor și formula de la ^LL tratează același cap ca 12 puncte pe milimetru, adică 304,8 dpi. Calculul e mereu același: milimetrii înmulțiți cu punctele pe milimetru, rotunjiți la un număr întreg.
| Ce măsori | Milimetri | 203 dpi (8 puncte/mm) | 300 dpi (11,8 puncte/mm) | 300 dpi (12 puncte/mm) |
|---|---|---|---|---|
| lățimea etichetei (^PW) | 100 | 800 | 1.181 | 1.200 |
| înălțimea etichetei (^LL) | 50 | 400 | 590 | 600 |
| marginea din stânga (^FO x) | 5 | 40 | 59 | 60 |
| titlul (^A0 h) | 5 | 40 | 59 | 60 |
| textul mic (^A0 h) | 3,5 | 28 | 41 | 42 |
| înălțimea codului de bare (^BC h) | 13,75 | 110 | 162 | 165 |
| bara cea mai îngustă (^BY w) | 0,375 | 3 | 4 (0,339 mm) | 4 (0,333 mm) sau 5 (0,417 mm) |
Diferența dintre 11,8 și 12 puncte pe milimetru se vede abia pe lățimea întreagă: pe 100 mm sunt 19 puncte, cam 1,6 mm. Lasă de aceea cel puțin 2–3 mm de margine pe ambele laturi și nu pune câmpuri lipite de marginea etichetei. Lățimea reală în puncte o arată raportul de configurare al imprimantei, la PRINT WIDTH, iar rezoluția la RESOLUTION; raportul se tipărește dacă trimiți comanda ~WC.
Lățimea capului e a doua limită. Zebra ZD421 tipărește pe 104 mm la 203 dpi, adică 832 de puncte, după fișa seriei ZD400. Un câmp care începe după acest punct nu apare pe etichetă, iar un ^PW mai mare decât eticheta e redus de imprimantă la lățimea maximă.
ZPL acceptă și milimetri. Comanda ^MUm, pusă la începutul formatului, face ca valorile următoare să fie citite în milimetri; exemplul Zebra este ^MUm^FO12.5,12.5. Tot ^MU poate converti un șablon dintr-o rezoluție în alta: ^MUd,200,300 la începutul unui format desenat pentru 203 dpi îl tipărește la mărimea corectă pe o imprimantă de 300 dpi. Barele codului se rotunjesc însă tot la puncte întregi, așa că un șablon convertit se verifică la fel ca unul nou. Formatele generate de programe și de curieri sunt aproape mereu în puncte, de aceea merită să le poți citi așa.
Codul de bare Code 128 cu ^BY și ^BC
Code 128 codifică toate caracterele ASCII și e codul obișnuit pentru etichete interne: cod de articol, lot, raft, număr de comandă. Diferențele față de EAN-13, GS1-128 sau codurile 2D sunt explicate în ghidul tipurilor de coduri de bare. În ZPL, codul se face din două comenzi: ^BY stabilește mărimea, iar ^BC desenează codul.
- ^BYw,r,h: w este lățimea modulului (bara cea mai îngustă), de la 1 la 10 puncte, cu 2 la pornirea imprimantei; r este raportul dintre bara lată și cea îngustă, fără efect la Code 128, care are raport fix; h este înălțimea implicită. Valorile rămân valabile până la următorul ^BY.
- ^BCo,h,f,g,e,m: o este orientarea (N normal, R rotit cu 90°, I întors, B citit de jos în sus), h înălțimea în puncte, f rândul citibil (Y implicit), g rândul deasupra codului (N implicit), e cifra de control UCC (N implicit), m modul.
Lungimea codului se poate calcula înainte de tipărire. Fiecare caracter Code 128 are 11 module, caracterul de start și cifra de control câte 11, iar cel de stop 13. Codul MP0912-2610 are 11 caractere, deci 156 de module: la ^BY3 iese 468 de puncte, adică 58,5 mm, iar la ^BY2, 39 mm. Pe lângă cod trebuie să rămână o zonă albă de cel puțin 10 module pe fiecare parte, 3,75 mm la ^BY3. În exemplu, codul pornește la 5 mm de margine, deci zona din stânga e respectată.
Fără cod de start în date, ZPL folosește subsetul B, cel cu litere și cifre. Dacă pui m = A (^BCN,110,Y,N,N,A), imprimanta alege singură subsetul și trece pe subsetul C la patru sau mai multe cifre la rând, unde două cifre ocupă un singur caracter. Codurile cu multe cifre ies astfel mai scurte. Pentru GS1-128, ghidul Zebra are modul D (pe firmware x.11 sau mai nou), care pune singur caracterul FNC1 și cifra de control.
Lățimea barei contează pentru citire. La 203 dpi, ^BY2 dă bare de 0,25 mm, iar ^BY3 de 0,375 mm. Pentru etichetele GS1-128 de pe colete, GS1 cere minimum 0,495 mm, adică ^BY4 la 203 dpi și ^BY6 la 300 dpi; ghidul de alegere a imprimantei de etichete are calculul pe rezoluții. Pentru coduri QR există comanda ^BQ, cu altă logică a datelor din ^FD.
Diacriticele cu ^CI28 și un font care le are
Fără ^CI, imprimanta citește textul în setul de caractere standard Zebra, Code Page 850, în care â și î există, dar ă, ș și ț lipsesc. Comanda ^CI28 schimbă codificarea în UTF-8. Ghidul Zebra precizează că valorile 28–30 merg pe firmware V60.14.x, V50.14.x sau mai nou și recomandă un ^CI la începutul fiecărui format. Versiunea de firmware apare în raportul de configurare, la FIRMWARE.
Literele românești ies corect doar dacă sunt îndeplinite trei condiții:
- Pune ^CI28 imediat după ^XA, înaintea primului câmp cu text.
- Salvează fișierul în UTF-8. Un fișier salvat în ANSI trimite alte coduri pentru aceleași litere, iar imprimanta tipărește alte semne.
- Folosește un font care conține literele. ^CI28 schimbă doar felul în care se citesc octeții; dacă fontul ales nu are ș sau ț, locul lor rămâne gol sau apare alt semn.
Fontul 0 e primul de încercat. Dacă nu are toate literele, fonturile din imprimantă se listează cu ^XA^WDZ:*.FNT^XZ (fonturile rezidente, exemplul din ghid) și ^XA^WDE:*.*^XZ (ce s-a încărcat în memoria flash). Un font TrueType încărcat se cheamă cu ^A@, după numele complet, sau i se atribuie o literă cu ^CW. Ghidul ZD421 indică pentru încărcarea fonturilor Zebra Setup Utilities sau ZebraNet Bridge. Atenție și la ce trimite programul: codificarea Windows-1250 are ş și ţ cu sedilă, nu ș și ț cu virgulă, deci textul convertit pe drum poate ieși cu literele greșite chiar dacă imprimanta le are pe cele corecte.
Testul e scurt: tipărește un câmp cu Ă Â Î Ș Ț ă â î ș ț înainte să pui textul real în șablon. Dacă vreo literă lipsește, problema e fontul sau fișierul, nu imprimanta.
Verificarea înainte de tipărire
Un format nou se verifică în două trepte: întâi pe ecran, apoi pe o singură etichetă. Pe ecran, cel mai cunoscut instrument este Labelary (labelary.com), un vizualizator ZPL online. Labelary nu este un produs Zebra, ci al unei firme independente. În el se alege densitatea capului (8 puncte/mm pentru 203 dpi, 12 pentru 300 dpi) și mărimea etichetei, iar formatul apare ca imagine. Propriile întrebări frecvente ale Labelary spun că eticheta tipărită poate să difere, că unele comenzi nu sunt suportate sau sunt redate greșit și că fonturile lui internaționale nu există pe imprimantă dacă nu le încarci tu. Nu lipi acolo formate cu date reale de clienți, ca numele și adresele de pe un AWB: fișierul pleacă de pe calculatorul tău.
Proba de pe imprimantă rămâne decisivă. Tipărește formatul cu ^PQ1, măsoară cu rigla marginile și mărimea literelor și citește codul de bare cu un cititor de coduri de bare, comparând textul citit cu cel din ^FD. Abia apoi schimbă cantitatea, de exemplu ^PQ50 pentru 50 de etichete.
Trimiterea fișierului la imprimantă
Zebra documentează trei căi, după cum e legată imprimanta. Toate trimit fișierul ca text, direct imprimantei. Nu tipări fișierul .zpl cu Imprimare din Notepad: driverul îl tratează ca pe o pagină de text și tipărește chiar comenzile.
Din Zebra Setup Utilities, prin USB sau rețea
Zebra Setup Utilities (ZSU) are o fereastră de comunicare directă cu imprimanta, descrisă în articolul de suport Zebra despre trimiterea comenzilor din ZSU. Programul folosește portul ales în driverul ZDesigner, deci driverul trebuie instalat înainte.
- Deschide Zebra Setup Utilities și selectează imprimanta din listă.
- Apasă Open Communication with Printer.
- Lipește conținutul fișierului .zpl în fereastra Direct Communications.
- Apasă Send to Printer. Eticheta iese când imprimanta primește ^XZ.
- Pentru refolosire, salvează textul din aceeași fereastră, din File, Save As.
Dacă imprimanta e în rețea și ZSU dă eroare la portul TCP/IP, Zebra indică instalarea ZebraDesigner Port Monitor.
Prin FTP, la o imprimantă în rețea
Ghidul imprimantelor ZD421 și ZD621 descrie un test de tipărire prin FTP, care merge la fel pentru orice fișier ZPL.
- Află adresa IP a imprimantei din raportul de configurare a rețelei.
- Deschide Command Prompt pe un calculator din aceeași rețea și scrie ftp urmat de adresă, de exemplu ftp 192.168.1.50.
- Scrie put urmat de numele fișierului, de exemplu put eticheta.zpl, și apasă Enter.
Ca prim test, Zebra folosește un fișier care conține doar ~WC: imprimanta răspunde cu raportul de configurare, deci știi că legătura merge.
Pe portul 9100, din programe
Serviciul de tipărire TCP al imprimantelor Zebra ascultă implicit pe portul 9100 (setarea ip.port din ghidul ZPL). Aici trimit ZPL-ul programele de gestiune, WMS-urile și aplicațiile proprii: deschid o conexiune la adresa IP și portul 9100 și scriu textul formatului. Portul se poate schimba din setările imprimantei, deci, dacă un program nu tipărește, verifică întâi că folosește același port ca imprimanta. Pentru imprimantele legate pe portul serial, ghidul Zebra dă comanda COPY TEST.ZPL COM1, dar pentru USB pe Windows calea documentată rămâne ZSU.

Când eticheta nu iese cum trebuie
Cele mai multe probleme ale unui format nou vin din câteva comenzi lipsă sau rămase de la alt format. Tabelul pornește de la ce vezi pe etichetă.
| Ce vezi | Cauza probabilă | Ce faci |
|---|---|---|
| imprimanta primește datele, dar nu tipărește nimic | lipsește ^XZ; eticheta se tipărește abia la primirea lui | pune ^XZ pe ultimul rând și retrimite formatul |
| un câmp lipsește sau textul lui apare în alt câmp | lipsește ^FS după ^FD, iar câmpul nu se închide | închide fiecare câmp cu ^FS, cum recomandă Zebra |
| eticheta e la circa două treimi din mărime sau iese mare și tăiată | șablon de 203 dpi pe imprimantă de 300 dpi sau invers | refă pozițiile după tabelul de mai sus sau folosește ^MUd,200,300 |
| tot conținutul e decalat cu câțiva milimetri | ^LH rămas de la alt format (se păstrează până la oprirea imprimantei) sau valori modificate la LABEL TOP și LEFT POSITION | scrie ^LH0,0 în fiecare format și verifică cele două valori în raportul de configurare |
| eticheta începe la jumătate sau sare o etichetă | senzorul nu e calibrat pentru rola curentă | calibrează senzorul, ca în ghidul de configurare Zebra |
| partea dreaptă lipsește | ^PW prea mic sau câmpuri dincolo de lățimea capului | potrivește ^PW cu eticheta și ține câmpurile în PRINT WIDTH |
| pe rola continuă, etichetele au altă lungime | ^LL lipsește sau e pus după primul ^FS | pune ^LL la începutul formatului |
| ă, ș, ț lipsesc sau apar ca alte semne | lipsește ^CI28, fișierul e salvat în ANSI sau fontul nu are literele | vezi cele trei condiții de la diacritice |
| textul cu ^ sau ~ e tăiat | cele două caractere sunt prefixe de comandă și nu pot sta direct în ^FD | scrie-le cu ^FH, în cod hexazecimal, cum indică ghidul Zebra |
| codul de bare nu se citește | bare prea înguste sau cod lipit de marginea etichetei | crește ^BY și lasă 10 module libere pe fiecare parte |
Un format corectat se testează din nou cu ^PQ1. Dacă problema apare doar la unele etichete dintr-un lot, cauza e de obicei rola sau senzorul, nu formatul.
ZPL pe imprimante care nu sunt Zebra
TSC, Citizen, BIXOLON și Honeywell (acum Brady) au imprimante care emulează ZPL, iar ghidul de alegere arată ce emulare are fiecare marcă. Emularea acoperă comenzile uzuale, ca cele din exemplul de mai sus, dar nu garantează că orice fișier ZPL iese identic: fonturile, comenzile mai rare și setările de configurare pot fi tratate altfel. Înainte să muți producția de etichete pe o imprimantă cu emulare, tipărește pe ea șablonul real, cu datele reale, și citește codurile.
Pe imprimantele Zebra, ZPL e limbajul nativ. În categoria de imprimante de etichete sunt modele desktop ca Zebra ZD220t și ZD230t, ZD421d și ZD421t, aceasta și la 300 dpi, ZD611d de 300 dpi și ZD621d, industriale ca ZT111, ZT231, ZT411 și ZT610 și mobile ca ZQ310 Plus sau ZQ630 Plus. Pentru AWB-uri, modelele termice directe de 4 inch sunt adunate la imprimantele pentru AWB.
Lista de verificare pentru primul șablon
- Notează rezoluția imprimantei și lățimea în puncte din raportul de configurare (~WC).
- Măsoară eticheta și transformă milimetrii în puncte: × 8 la 203 dpi, × 12 la 300 dpi, cu margini de 2–3 mm.
- Pornește formatul cu ^XA, ^CI28, ^PW, ^LL și ^LH0,0, toate înaintea primului câmp.
- Închide fiecare câmp cu ^FS și formatul cu ^XZ.
- Calculează lungimea codului de bare din numărul de caractere și verifică zona albă din jurul lui.
- Salvează fișierul în UTF-8 și tipărește un rând de test cu Ă Â Î Ș Ț ă â î ș ț.
- Previzualizează formatul fără date personale, apoi tipărește o etichetă cu ^PQ1 și citește codul cu un cititor.
- Abia după proba reușită, mărește cantitatea din ^PQ sau leagă șablonul de program.
Cauți echipamentul potrivit?
Echipa ADC Store îți răspunde de luni până vineri, între 8:30 și 16:30, la 021 255 71 74 sau la office@adc-store.ro. Pentru mai multe echipamente îți facem o ofertă pentru tot proiectul.
Produsele din acest ghid
Vezi toate: imprimante awbÎn stoc la furnizor
În stoc la furnizor
Disponibil de la 06.11.2026
În stoc la furnizor
Citește și
Toate articoleleCum alegi o imprimantă de etichete: desktop, industrială sau mobilă
Criteriile în ordinea în care decid: volum zilnic, lățime, rezoluție după codul de bare, metodă, rolă și ribon, conectare și mediu, cu tabele de…
Termic direct vs transfer termic: ce imprimantă și ce etichete alegi
Diferența dintre termic direct și transfer termic, cât rezistă fiecare etichetă, ce ribon alegi după material și ce metodă merge pentru AWB, raft, inventar,…
Printare AWB pe imprimanta termică: format 100 x 150 și setări
Pașii pentru AWB-uri corecte pe imprimanta termică: formatul A6 de la curier, etichetele de 100 x 150 mm, setarea driverului la scara 100% și…






