Progettazione di etichette Zebra (ZPL)

Le stampanti di etichette Zebra non comprendono i documenti normali. Leggono invece un piccolo insieme di comandi di testo chiamati ZPL (Zebra Programming Language). Un design ZPL è semplicemente un blocco di testo che indica alla stampante cosa mettere sull’etichetta e dove: una riga di testo qui, un prezzo là, un codice QR nell’angolo.

Questa pagina spiega ZPL da zero, in modo che Lei possa leggere, modificare e creare le Sue etichette prodotto senza aiuto. Progetti la Sua etichetta in Configurazione ‣ Stampanti, nel campo Design personalizzato etichetta prodotto Zebra (veda Configurazione della stampante).

Suggerimento

Raramente si parte da una pagina vuota. Gem Logic fornisce a ogni etichetta un design predefinito funzionante. Il modo più rapido per imparare è aprire quel design predefinito, cambiare una cosa, salvare e guardare l’immagine di anteprima. Ripeta finché non risulta corretto.

Avvio rapido

  1. Vada in Configurazione ‣ Stampanti e trovi il campo Design personalizzato etichetta prodotto Zebra.

  2. Effettui una piccola modifica (ad esempio, sposti una riga o ingrandisca il prezzo).

  3. Clicchi su Salva. Gem Logic genera automaticamente un”immagine di anteprima dell’etichetta.

  4. Guardi l’anteprima. Se non è corretta, modifichi e salvi di nuovo.

Nulla viene inviato a una stampante reale mentre sperimenta — l’anteprima è generata dal Suo design, quindi può iterare in sicurezza prima di stampare anche solo un’etichetta.

Come è costruita un’etichetta ZPL

Ogni etichetta inizia con ^XA e termina con ^XZ. Tutto quello che si trova nel mezzo descrive l’etichetta. Un comando inizia sempre con un accento circonflesso ^ (o talvolta una tilde ~).

^XA            (start of the label)
... commands that build the label ...
^XZ            (end of the label)

All’interno, lo schema più comune è «andare a una posizione, poi stampare qualcosa lì»:

^FO50,30^FDHello^FS

Quella singola riga significa: andare alla posizione 50,30 e stampare il testo «Hello». Scomposta:

  • ^FO50,30Field Origin: spostare a x=50, y=30 (l’angolo in alto a sinistra di ciò che segue).

  • ^FDHelloField Data: il contenuto effettivo da stampare.

  • ^FSField Separator: segna la fine di questo elemento. Chiuda sempre un campo con ^FS.

Questo rappresenta il 90% della progettazione di etichette: una serie di righe «posizione + contenuto» sovrapposte.

Dimensione etichetta, punti e millimetri

Le stampanti Zebra misurano tutto in punti, non in millimetri. La maggior parte delle stampanti di etichette stampa a 203 DPI, il che significa:

  • 1 mm ≈ 8 punti

  • 1 pollice = 203 punti

Quindi un’etichetta larga 56 mm e alta 13 mm misura circa 448 punti in larghezza e 104 punti in altezza.

Due comandi impostano l’area stampabile:

  • ^PWPrint Width, larghezza di stampa, in punti.

  • ^LLLabel Length, lunghezza etichetta (altezza), in punti.

^PW448        (label is 448 dots wide ≈ 56 mm)
^LL104        (label is 104 dots tall ≈ 13 mm)

Importante

La dimensione fisica dell’etichetta viene anche dai campi Larghezza etichetta prodotto e Lunghezza etichetta prodotto accanto al design. Manteneteli sincronizzati con il Suo stock di etichette effettivo. La variabile {label_length} viene compilata automaticamente dal campo lunghezza, motivo per cui il design predefinito usa ^LL{label_length}.

Posizionamento: la griglia di coordinate

Pensi all’etichetta come a una griglia. Il punto 0,0 è l”angolo superiore sinistro. Il primo numero è x (quanto a destra) e il secondo è y (quanto in basso), entrambi in punti.

^FO0,0        top-left corner
^FO200,0      200 dots to the right, same height
^FO0,40       left edge, 40 dots down

Per spostare un elemento, modifichi i suoi numeri ^FO. x più grande = più a destra; y più grande = più in basso. È così che si posiziona lo SKU su una riga e il metallo sulla successiva: si dà loro la stessa x ma una y maggiore sulla seconda riga.

Aggiunta e dimensionamento del testo

Prima di stampare il testo si sceglie solitamente una dimensione del carattere. Il modo più semplice è ^CF0,h (Change default Font, modificare il carattere predefinito), dove h è l’altezza del carattere in punti:

^CF0,28               use ~28-dot-tall text from here on
^FO50,30^FDPrice^FS   print "Price" at 50,30 in that size

Ogni ^FD ... ^FS dopo un ^CF usa quella dimensione finché non ne imposta una diversa. Quindi per mescolare dimensioni su un’etichetta, imposti ^CF0,28 prima del testo grande e ^CF0,14 prima del testo piccolo.

Suggerimento

Per aggiungere una nuova riga di testo, non prema Invio — aggiunga un altro campo posizionato più in basso. Copi una riga esistente, le dia un valore y maggiore e modifichi il suo contenuto.

Inserimento dati prodotto

Un design di etichetta viene riutilizzato per ogni prodotto, quindi non digita lo SKU o il prezzo manualmente. Invece inserisca le variabili tra parentesi graffe e Gem Logic le sostituisce con i dati reali di ciascun prodotto quando l’etichetta viene stampata.

^FO1,8^FD{item_sku}^FS          prints this product's SKU
^FO180,50^FD{currency}{price}^FS prints e.g. €129

Le stesse variabili sono mostrate come badge cliccabili direttamente sotto il campo del design nell’app, così può vedere quali sono disponibili mentre modifica.

Variabili disponibili

Prodotto

  • {brand}: nome del brand

  • {product_title}: titolo del prodotto

  • {item_sku}: SKU del prodotto

  • {ean_code}: barcode EAN (usato per il codice QR)

  • {price} e {currency}: prezzo e simbolo di valuta

  • {serial_number}: numero di serie

  • {year_of_manufacture}: anno di fabbricazione

  • {supplier_product_reference}: riferimento prodotto del fornitore

  • {supplier_reference}: riferimento fornitore

Materiali e gemme

  • {material_1} a {material_5}: descrizione completa del materiale (peso, nome e dettagli della gemma)

  • {material_only_1} a {material_only_5}: solo nome del materiale o della gemma

Attributi

  • {attribute_1} a {attribute_5}: attributo nella forma nome: valore

  • {attribute_name_1} a {attribute_name_5}: solo nome dell’attributo

  • {attribute_value_1} a {attribute_value_5}: solo valore dell’attributo

Dimensioni

  • {weight}, {length}, {width}, {height}, {diameter}, {size}, {thickness}, {quality}

Collezioni

  • {collections}: le collezioni a cui appartiene il prodotto

Categorie

  • {categories}: le categorie a cui appartiene il prodotto, separate da virgole

Paese di origine

  • {country_of_origin}: il paese da cui proviene il prodotto

Purezza

  • {clarity}: la purezza della gemma del prodotto

Codice di costo

  • {encoded_cost}: il costo di acquisto convertito nel Suo codice di costo privato (le lettere sono impostate in Configurazione ‣ Impostazioni generali), in modo che il costo reale non sia leggibile sull’etichetta.

RFID (necessario solo per etichette con tag RFID)

  • {item_sku_epc_hex}: lo SKU codificato come valore EPC per il chip RFID

  • {item_sku_epc_word_count}: la lunghezza EPC, utilizzata dal comando RFID ZPL

Layout

  • {label_length}: compilato automaticamente dall’impostazione della lunghezza dell’etichetta

Codici QR e barcode

Un codice QR viene aggiunto con ^BQN seguito da un campo dati che inizia con QA,:

^FO0,30^BQN,2,2^FDQA,{ean_code}^FS
  • ^FO0,30 — posizione del codice QR.

  • ^BQN,2,2 — un codice QR. L”ultimo numero indica la dimensione (ingrandimento). Lo aumenti (3, 4, 5…) per ottenere un codice più grande e più facile da scansionare; lo riduca per risparmiare spazio.

  • ^FDQA,{ean_code}^FS — i dati contenuti nel codice. Qui codifica l’EAN del prodotto.

Per un barcode 1D classico, utilizzi invece ^BCN (Code 128):

^FO20,20^BCN,60,Y,N,N^FD{ean_code}^FS

Il 60 è l’altezza del barcode in punti, e Y stampa il numero leggibile sotto.

Il design predefinito, spiegato

Questo è il design iniziale fornito da Gem Logic, annotato riga per riga. Leggerlo è il modo più rapido per capire come si incastrano i vari elementi.

^XA
^MD20
^CI28
^LL{label_length}
^LH0,0
^CF0,18
^FO180,8^FD{brand}^FS
^CF0,14
^FO50,45^FD{material_2}^FS
^FO50,60^FD{material_3}^FS
^FO180,27^FD{material_1}^FS
^CF0,28
^FO180,50^FD{currency}{price}^FS
^CF0,16
^FO1,8^FD{item_sku}^FS
^FO1,23^FD{supplier_product_reference}^FS
^FO50,60^FD{supplier_reference}^FS
^FO0,30^BQN,2,2
^FDQA,{ean_code}^FS
^XZ

Riga per riga:

  • ^XA — inizio dell’etichetta.

  • ^MD20 — intensità di stampa. Aumentarla se le etichette appaiono sbiadite, ridurla se il testo è sfocato.

  • ^CI28 — codifica caratteri, in modo che e gli accenti vengano stampati correttamente.

  • ^LL{label_length} — altezza dell’etichetta, compilata automaticamente dall’impostazione di lunghezza.

  • ^LH0,0 — posizione di partenza: l’origine è l’angolo in alto a sinistra.

  • ^CF0,18 — dimensione del testo ~18 punti per le righe successive.

  • ^FO180,8^FD{brand}^FS — il marchio, vicino alla parte superiore.

  • ^CF0,14 — testo più piccolo da qui in poi.

  • ^FO50,45^FD{material_2}^FS, ^FO50,60^FD{material_3}^FS, ^FO180,27^FD{material_1}^FS — i tre materiali.

  • ^CF0,28 — testo più grande per il prezzo.

  • ^FO180,50^FD{currency}{price}^FS — il prezzo, ad es. €129.

  • ^CF0,16 — testo medio.

  • ^FO1,8^FD{item_sku}^FS — lo SKU, in alto a sinistra.

  • ^FO1,23^FD{supplier_product_reference}^FS — riferimento prodotto del fornitore.

  • ^FO50,60^FD{supplier_reference}^FS — riferimento fornitore.

  • ^FO0,30^BQN,2,2 poi ^FDQA,{ean_code}^FS — il codice QR (in basso a sinistra) e i suoi dati (l’EAN).

  • ^XZ — fine dell’etichetta.

Avvertimento

ZPL non supporta commenti di riga — non utilizzare il punto e virgola ; per aggiungere note. ZPL comprende solo i comandi che iniziano con ^ (o ~), quindi tutto ciò che segue un ; viene letto come parte del valore del comando (o come dati dell’etichetta dispersi). Questo è ciò che causa errori come «Value “20;” is not a valid number» o «Ignored unrecognized content», e un ; disperso può spostare o rompere silenziosamente il layout.

Per lasciare una nota, utilizzare il comando di commento ^FX, chiuso con ^FS. La stampante ignora tutto ciò che si trova al suo interno:

^FX brand, near the top ^FS
^FO180,8^FD{brand}^FS

L’unica regola: un commento ^FX non può contenere un ^ o ~ — questi caratteri terminano il commento e avviano il comando successivo.

Modifiche comuni

Ingrandire il prezzo

Trovare il ^CF0,28 prima della riga {price} e aumentare il numero, ad es. ^CF0,40.

Spostare un elemento

Modificare i numeri ^FO. Per spostare il marchio verso il basso, aumentare il secondo numero in ^FO180,8 (il 8).

Aggiungere una nuova riga di testo

Copiare una riga ^FO…^FD…^FS, assegnarle un valore y maggiore in modo che si posizioni più in basso e modificare il contenuto o la variabile.

Ingrandire il codice QR

Aumentate l’ultimo numero in ^BQN,2,2 (provate ^BQN,3,3). Se viene tagliato, dategli più spazio o spostatelo a sinistra/in alto con il suo ^FO.

Aggiungere una linea di separazione

Utilizzate una casella grafica. ^FO0,40^GB540,2,2^FS disegna una linea orizzontale sottile larga 540 punti.

Anteprima e test prima della stampa

Avete due modi semplici per verificare un design prima di utilizzare etichette reali:

  • In Gem Logic: ogni volta che salvate, un’immagine di anteprima dell’etichetta appare sotto il campo di design. Utilizzatela come ciclo di feedback principale.

  • Online: incolla il tuo ZPL nel visualizzatore Labelary gratuito per vedere un’anteprima istantanea con diverse dimensioni di etichetta. (Sostituisci prima le {variables} con del testo di esempio, poiché Labelary non conosce i tuoi dati prodotto.)

Se un’etichetta reale appare errata — testo tagliato, un codice QR che non si legge, dimensione errata — consultate la sezione etichette di Risoluzione dei problemi.

Riferimento rapido dei comandi

Comando

Cosa fa

^XA / ^XZ

Inizio / fine dell’etichetta. Tutto si trova tra questi due comandi.

^PW

Larghezza di stampa in punti.

^LL

Lunghezza etichetta (altezza) in punti.

^LH

Label home — il punto di origine (di solito 0,0).

^FO x,y

Field origin — posizionare l’elemento successivo a x,y.

^CF0,h

Impostare l’altezza del carattere predefinita (h punti) per il testo seguente.

^FD ... ^FS

Field data — il contenuto da stampare — chiuso da un separatore di campo.

^FX ... ^FS

Commento — ignorato dalla stampante. Non può contenere ^ o ~.

^MD

Media darkness (intensità di stampa). Più alto significa più scuro.

^BQN,m,m

Codice QR; l’ultimo numero è la dimensione. I dati iniziano con QA,.

^BCN,h,...

Barcode Code 128; h è l’altezza in punti.

^GB w,h,t

Disegna un riquadro o una linea (larghezza, altezza, spessore in punti).

^CI28

Codifica dei caratteri, in modo che simboli come vengano stampati correttamente.

Per il linguaggio completo, Zebra pubblica una guida completa ai comandi ZPL, ma i comandi sopra riportati coprono quasi ogni etichetta prodotto.