Conception d’étiquettes Zebra (ZPL)

Les imprimantes d’étiquettes Zebra ne comprennent pas les documents normaux. Elles lisent plutôt un petit ensemble de commandes texte appelées ZPL (Zebra Programming Language). Une conception ZPL n’est qu’un bloc de texte qui indique à l’imprimante quoi mettre sur l’étiquette et où : une ligne de texte ici, un prix là, un code QR dans le coin.

Cette page explique le ZPL depuis le début afin que vous puissiez lire, modifier et créer vos propres étiquettes produit sans aide. Vous concevez votre étiquette dans Configuration ‣ Imprimantes, dans le champ Conception personnalisée d’étiquette produit Zebra (voir Configuration des imprimantes).

Astuce

Vous partez rarement d’une page vierge. Gem Logic donne à chaque étiquette une conception par défaut fonctionnelle. Le moyen le plus rapide d’apprendre est d’ouvrir cette conception par défaut, de changer une chose, d’enregistrer et de regarder l’image d’aperçu. Répétez jusqu’à ce que cela paraisse correct.

Démarrage rapide

  1. Allez dans Configuration ‣ Imprimantes et trouvez le champ Conception personnalisée d’étiquette produit Zebra.

  2. Effectuez un petit changement (par exemple, déplacez une ligne ou agrandissez le prix).

  3. Cliquez sur Sauver. Gem Logic génère automatiquement une image d’aperçu de l’étiquette.

  4. Regardez l’aperçu. S’il est incorrect, ajustez et enregistrez à nouveau.

Rien n’est envoyé à une vraie imprimante pendant que vous expérimentez — l’aperçu est généré à partir de votre conception, vous pouvez donc itérer en toute sécurité avant d’imprimer une seule étiquette.

Comment une étiquette ZPL est construite

Chaque étiquette commence par ^XA et se termine par ^XZ. Tout ce qui se trouve entre les deux décrit l’étiquette. Une commande commence toujours par un accent circonflexe ^ (ou parfois un tilde ~).

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

À l’intérieur, le schéma le plus courant est **« aller à une position, puis imprimer quelque chose là » ** :

^FO50,30^FDHello^FS

Cette ligne unique signifie : aller à la position 50,30 et imprimer le texte « Hello ». Détaillée :

  • ^FO50,30Field Origin : déplacer à x=50, y=30 (le coin supérieur gauche de ce qui suit).

  • ^FDHelloField Data : le contenu réel à imprimer.

  • ^FSField Separator : marque la fin de cet élément. Fermez toujours un champ avec ^FS.

Cela représente 90 % de la conception d’étiquettes : une série de lignes « position + contenu » empilées les unes sur les autres.

Taille d’étiquette, points et millimètres

Les imprimantes Zebra mesurent tout en points, pas en millimètres. La plupart des imprimantes d’étiquettes impriment à 203 DPI, ce qui signifie :

  • 1 mm ≈ 8 points

  • 1 pouce = 203 points

Ainsi, une étiquette de 56 mm de large et 13 mm de haut fait environ 448 points de large et 104 points de haut.

Deux commandes définissent la zone imprimable :

  • ^PWPrint Width, largeur d’impression, en points.

  • ^LLLabel Length, longueur d’étiquette (hauteur), en points.

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

Important

La taille physique de l’étiquette provient également des champs Largeur d’étiquette produit et Longueur d’étiquette produit à côté du design. Gardez-les synchronisés avec votre stock d’étiquettes réel. La variable {label_length} est remplie automatiquement à partir du champ de longueur, c’est pourquoi le design par défaut utilise ^LL{label_length}.

Positionnement : la grille de coordonnées

Imaginez l’étiquette comme une grille. Le point 0,0 est le coin supérieur gauche. Le premier nombre est x (distance vers la droite) et le second est y (distance vers le bas), tous deux en points.

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

Pour déplacer un élément, modifiez ses nombres ^FO. x plus grand = plus à droite ; y plus grand = plus bas. C’est ainsi que vous placez l’USG sur une ligne et le métal sur la suivante : donnez-leur le même x mais un y plus grand sur la deuxième ligne.

Ajout et dimensionnement du texte

Avant d’imprimer du texte, vous choisissez généralement une taille de police. La méthode la plus simple est ^CF0,h (Change default Font, modifier la police par défaut), où h est la hauteur des caractères en points :

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

Chaque ^FD ... ^FS après un ^CF utilise cette taille jusqu’à ce que vous en définissiez une différente. Donc, pour mélanger des tailles sur une étiquette, définissez ^CF0,28 avant le texte grand et ^CF0,14 avant le texte petit.

Astuce

Pour ajouter une nouvelle ligne de texte, vous n’appuyez pas sur Entrée — vous ajoutez un autre champ positionné plus bas. Copiez une ligne existante, donnez-lui une valeur y plus grande et modifiez son contenu.

Insertion des données produit

Un design d’étiquette est réutilisé pour chaque produit, vous ne saisissez donc pas l’USG ou le prix manuellement. Vous insérez plutôt des variables entre accolades, et Gem Logic les remplace par les données réelles de chaque produit lors de l’impression de l’étiquette.

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

Les mêmes variables sont affichées sous forme de badges cliquables directement sous le champ de design dans l’application, afin que vous puissiez voir celles qui sont disponibles pendant que vous éditez.

Variables disponibles

Produit

  • {brand} : nom de la marque

  • {product_title} : titre du produit

  • {item_sku} : USG du produit

  • {ean_code} : code-barres EAN (utilisé pour le code QR)

  • {price} et {currency} : prix et symbole de devise

  • {serial_number} : numéro de série

  • {year_of_manufacture} : année de fabrication

  • {supplier_product_reference} : référence produit du fournisseur

  • {supplier_reference} : référence fournisseur

Matières et gemmes

  • {material_1} à {material_5} : description complète de la matière (poids, nom et détails de la gemme)

  • {material_only_1} à {material_only_5} : nom de la matière ou de la gemme uniquement

Attributs

  • {attribute_1} à {attribute_5} : attribut sous la forme nom: valeur

  • {attribute_name_1} à {attribute_name_5} : nom de l’attribut uniquement

  • {attribute_value_1} à {attribute_value_5} : valeur de l’attribut uniquement

Dimensions

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

Collections

  • {collections} : les collections auxquelles appartient le produit

Catégories

  • {categories} : les catégories auxquelles le produit appartient, séparées par des virgules

Pays d’origine

  • {country_of_origin} : le pays d’où provient le produit

Pureté

  • {clarity} : la pureté de la gemme du produit

Code de coût

  • {encoded_cost} : le coût d’achat converti dans votre code de coût privé (les lettres sont définies sous Configuration ‣ Paramètres généraux), de sorte que le coût réel n’est pas lisible sur l’étiquette.

RFID (nécessaire uniquement pour les étiquettes avec puces RFID)

  • {item_sku_epc_hex} : l’USG encodé sous forme de valeur EPC pour la puce RFID

  • {item_sku_epc_word_count} : la longueur EPC, utilisée par la commande RFID ZPL

Mise en page

  • {label_length} : renseigné automatiquement d’après le paramètre de longueur d’étiquette

Codes QR et codes-barres

Un code QR est ajouté avec ^BQN suivi d’un champ de données commençant par QA, :

^FO0,30^BQN,2,2^FDQA,{ean_code}^FS
  • ^FO0,30 — position du code QR.

  • ^BQN,2,2 — un code QR. Le dernier chiffre correspond à la taille (agrandissement). Augmentez-le (3, 4, 5…) pour obtenir un code plus grand et plus facile à scanner ; diminuez-le pour économiser de l’espace.

  • ^FDQA,{ean_code}^FS — les données contenues dans le code. Ici, il encode l’EAN du produit.

Pour un code-barres 1D classique, utilisez plutôt ^BCN (Code 128) :

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

Le 60 correspond à la hauteur du code-barres en points, et Y imprime le numéro lisible en dessous.

Le design par défaut, expliqué

Voici le design de départ que Gem Logic vous fournit, annoté ligne par ligne. Le lire est le moyen le plus rapide de comprendre comment les éléments s’articulent.

^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

Ligne par ligne :

  • ^XA — début de l’étiquette.

  • ^MD20 — intensité d’impression. Augmentez-la si les étiquettes sont pâles, diminuez-la si le texte est bavé.

  • ^CI28 — encodage des caractères, pour que et les accents s’impriment correctement.

  • ^LL{label_length} — hauteur de l’étiquette, remplie automatiquement à partir du paramètre de longueur.

  • ^LH0,0 — position d’origine : l’origine se trouve en haut à gauche.

  • ^CF0,18 — taille du texte ~18 points pour les lignes qui suivent.

  • ^FO180,8^FD{brand}^FS — la marque, près du haut.

  • ^CF0,14 — texte plus petit à partir d’ici.

  • ^FO50,45^FD{material_2}^FS, ^FO50,60^FD{material_3}^FS, ^FO180,27^FD{material_1}^FS — les trois matières.

  • ^CF0,28 — texte plus grand pour le prix.

  • ^FO180,50^FD{currency}{price}^FS — le prix, par exemple €129.

  • ^CF0,16 — texte moyen.

  • ^FO1,8^FD{item_sku}^FS — l’USG, en haut à gauche.

  • ^FO1,23^FD{supplier_product_reference}^FS — référence produit du fournisseur.

  • ^FO50,60^FD{supplier_reference}^FS — référence fournisseur.

  • ^FO0,30^BQN,2,2 puis ^FDQA,{ean_code}^FS — le code QR (en bas à gauche) et ses données (l’EAN).

  • ^XZ — fin de l’étiquette.

Avertissement

ZPL ne prend pas en charge les commentaires de ligne — n’utilisez pas de point-virgule ; pour ajouter des notes. ZPL ne comprend que les commandes commençant par ^ (ou ~), donc tout ce qui suit un ; est lu comme faisant partie de la valeur de la commande (ou comme des données d’étiquette parasites). C’est ce qui provoque des erreurs comme « Value “20;” is not a valid number » ou « Ignored unrecognized content », et un ; parasite peut discrètement décaler ou casser votre mise en page.

Pour laisser une note, utilisez la commande de commentaire ^FX, fermée par ^FS. L’imprimante ignore tout ce qui se trouve à l’intérieur :

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

La seule règle : un commentaire ^FX ne peut pas contenir de ^ ou ~ — ces caractères terminent le commentaire et démarrent la commande suivante.

Modifications courantes

Agrandir le prix

Recherchez le ^CF0,28 avant la ligne {price} et augmentez le nombre, par exemple ^CF0,40.

Déplacer un élément

Modifiez ses nombres ^FO. Pour décaler la marque vers le bas, augmentez le deuxième nombre dans ^FO180,8 (le 8).

Ajouter une nouvelle ligne de texte

Copiez une ligne ^FO…^FD…^FS, donnez-lui une valeur y plus grande pour qu’elle se situe plus bas, et modifiez le contenu ou la variable.

Agrandir le code QR

Augmentez le dernier nombre dans ^BQN,2,2 (essayez ^BQN,3,3). S’il est coupé, donnez-lui plus d’espace ou déplacez-le vers la gauche/le haut avec son ^FO.

Ajouter une ligne de séparation

Utilisez une boîte graphique. ^FO0,40^GB540,2,2^FS trace une fine ligne horizontale de 540 points de large.

Prévisualiser et tester avant l’impression

Vous disposez de deux moyens simples pour vérifier un design avant d’utiliser de vraies étiquettes :

  • Dans Gem Logic : à chaque enregistrement, une image d’aperçu de l’étiquette apparaît sous le champ de design. Utilisez-la comme principale boucle de rétroaction.

  • En ligne : collez votre ZPL dans le visualiseur Labelary gratuit pour obtenir un rendu instantané à différentes tailles d’étiquette. (Remplacez d’abord les {variables} par un texte d’exemple, car Labelary ne connaît pas vos données produit.)

Si une étiquette réelle semble incorrecte — texte coupé, un QR qui ne se scanne pas, mauvaise taille — consultez la section étiquettes de Dépannage.

Référence rapide des commandes

Commande

Ce qu’elle fait

^XA / ^XZ

Début / fin de l’étiquette. Tout se trouve entre ces deux commandes.

^PW

Largeur d’impression en points.

^LL

Longueur d’étiquette (hauteur) en points.

^LH

Point d’origine de l’étiquette — le point d’origine (généralement 0,0).

^FO x,y

Field origin — positionner l’élément suivant à x,y.

^CF0,h

Définir la hauteur de police par défaut (h points) pour le texte suivant.

^FD ... ^FS

Field data — le contenu à imprimer — fermé par un séparateur de champ.

^FX ... ^FS

Commentaire — ignoré par l’imprimante. Ne peut pas contenir ^ ou ~.

^MD

Media darkness (densité d’impression). Plus élevé signifie plus foncé.

^BQN,m,m

Code QR ; le dernier nombre est la taille. Les données commencent par QA,.

^BCN,h,...

Code-barres Code 128 ; h est la hauteur en points.

^GB w,h,t

Tracer un rectangle ou une ligne (largeur, hauteur, épaisseur en points).

^CI28

Encodage des caractères, afin que les symboles comme s’impriment correctement.

Pour le langage complet, Zebra publie un guide de commandes ZPL détaillé, mais les commandes ci-dessus couvrent presque toutes les étiquettes produit.