EAN-13

L’EAN-13 est le code-barres de vente au détail correspondant à un GTIN-13 – l’identifiant mondial à 13 chiffres attribué par GS1 et imprimé sur pratiquement tous les produits de grande consommation. Passez soit 12 chiffres (le chiffre de contrôle sera calculé et ajouté), soit 13 chiffres (le dernier chiffre est traité comme un chiffre de contrôle et recalculé).

Voir aussi

Code-barres EAN sur Wikipédia pour des informations générales sur la symbologie elle-même.

L’EAN-13 est défini dans la norme ISO/IEC 15420 (Technologies de l’information – Techniques automatiques d’identification et de capture de données – Spécification de la symbologie des codes à barres EAN/UPC).

Avertissement

Les codes EAN-13 réels doivent être attribués par GS1 à votre organisation ; vous ne pouvez pas en inventer un. Inventer un code produira un code-barres lisible par un lecteur, mais il entrera en conflit avec les bases de données produits des distributeurs – ou en sera rejeté. Le numéro utilisé dans les exemples de cette page, 5050070007664, est le GTIN d’un produit réel (un DVD de Road House).

L’entrée doit comporter exactement 12 ou 13 chiffres, ASCII 0-9. Toute autre valeur lève PyStrichInvalidPayloadLength. Le libellé en clair sous les barres est imposé par la spécification EAN-13 et toujours rendu ; le seul point de personnalisation est le dictionnaire de réglages cosmétiques EAN13RenderOptions (voir Dimensionnement, libellé, police et mise en page ci-dessous).

Le chiffre de contrôle est toujours calculé par pyStrich ; passez soit 12 chiffres (il est ajouté), soit 13 chiffres (le dernier chiffre fourni est ignoré et recalculé) :

>>> from pystrich.ean13 import EAN13Encoder
>>> EAN13Encoder("505007000766").full_code
'5050070007664'
>>> EAN13Encoder("5050070007660").full_code
'5050070007664'

Exemple

from pystrich.ean13 import EAN13Encoder

encoder = EAN13Encoder("5050070007664")
encoder.save_svg("ean13-example.svg")
Code-barres EAN-13 encodant « 5050070007664 ».

Dimensionnement, libellé, police et mise en page

L’argument bar_width de save() et get_imagedata() définit la largeur, en pixels, de la barre la plus étroite (3 par défaut).

La spécification GS1 impose une zone de silence asymétrique (espace blanc) de 11 modules à gauche et de 7 modules à droite du symbole ; pyStrich la rend automatiquement et elle n’est pas configurable. Si vous intégrez le PNG enregistré dans une autre image, ne rognez pas dans la marge blanche, faute de quoi les lecteurs de caisse risquent de ne pas lire le symbole.

Modifié dans la version 0.11: La zone de silence était auparavant de 9 modules de chaque côté, ce qui est en deçà de la spécification à gauche.

Par défaut, pyStrich dessine le premier chiffre, celui du système de numérotation, légèrement plus haut que les deux principaux groupes de chiffres. Pour dessiner plutôt les trois groupes sur une même ligne de base, passez un dictionnaire options avec first_digit_y_offset réglé sur 0 :

La valeur est l’écart entre le premier chiffre et les autres, exprimé en fraction de la hauteur de l’image. 0.1 (par défaut) conserve l’aspect classique ; 0 aligne les trois groupes.

Ajouté dans la version 0.11: Le dictionnaire options et la clé first_digit_y_offset.

Voir aussi

Impression des codes-barres pour des conseils sur le choix de bar_width pour une sortie imprimée.

encoder = EAN13Encoder(
    "5050070007664", options={"first_digit_y_offset": 0}
)
encoder.save("ean13-level.png", bar_width=4)
Code-barres EAN-13 encodant « 5050070007664 » avec le libellé aligné sur une même ligne de base.

Formats de sortie

Sortie SVG

Pour une intégration dans des pages web ou tout flux de travail tirant parti d’une sortie indépendante de la résolution, utilisez save_svg() (ou get_svg() pour récupérer le SVG sous forme de chaîne).

EAN13Encoder("5050070007664").save_svg("ean13.svg")
Code-barres EAN-13 SVG encodant « 5050070007664 ».

Le viewBox du SVG est exprimé en unités de module, tandis que width et height sont mis à l’échelle par bar_width. Les zones de silence de 11 modules à gauche et de 7 modules à droite exigées par GS1 sont appliquées automatiquement. Les barres de garde s’étendent de 5 modules sous la ligne de base des barres de données, là encore conformément aux GS1 General Specifications.

Ajouté dans la version 0.12.

Sortie PNG

Pour une sortie matricielle, utilisez save() pour écrire un fichier PNG ou get_imagedata() pour récupérer les octets PNG bruts.

EAN13Encoder("5050070007664").save("ean13.png")

Sortie EPS

Pour une intégration dans LaTeX (\includegraphics) ou d’autres flux d’impression vectorielle, utilisez save_eps() (ou get_eps() pour récupérer l’EPS sous forme de chaîne).

EAN13Encoder("5050070007664").save_eps("ean13.eps")

L’argument bar_width est la largeur de la barre la plus étroite en points PostScript (1 point = 1/72 de pouce). Les zones de silence GS1 (11 modules à gauche, 7 modules à droite) et le décalage de 5 modules des barres de garde sont appliqués automatiquement.

Ajouté dans la version 0.12.

API

class EAN13Encoder(code: str, options: EAN13RenderOptions | None = None, *, require_valid_check_digit: bool = False)[source]

Bases : Bar1DEncoder

Encode un code de 12 ou 13 chiffres sous forme de code-barres 1D EAN-13.

Le chiffre de contrôle est calculé pour vous. Si un code de 13 chiffres est fourni, son dernier chiffre est ignoré et recalculé.

Utilisation typique:

encoder = EAN13Encoder("012345678901")
encoder.save("ean13.png")
Variables:
  • code – L’entrée de 12 chiffres (système de numérotation + fabricant + produit).

  • check_digit – Le chiffre de contrôle modulo 10 calculé.

  • full_code – Le code de 13 chiffres, chiffre de contrôle compris.

  • left_bars – Motif de barres de la moitié gauche du symbole.

  • right_bars – Motif de barres de la moitié droite.

  • options – Dictionnaire d’options de rendu (vide si aucune n’a été fournie).

  • width – Largeur en pixels de la dernière image rendue.

  • height – Hauteur en pixels de la dernière image rendue.

get_eps(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str

Génère le code-barres et renvoie le balisage EPS.

Paramètres:
  • bar_width – Largeur en points PostScript de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA, opaque. Blanc par défaut.

Type renvoyé:

str

Ajouté dans la version 0.12.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

get_imagedata(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) bytes

Génère le code-barres et renvoie les octets PNG.

Paramètres:
  • bar_width – Largeur en pixels de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Renvoie:

Données d’image encodées en PNG.

Type renvoyé:

bytes

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

get_pilimage(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) PILImage

Génère le code-barres et renvoie une image Pillow.

Paramètres:
  • bar_width – Largeur en pixels de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Renvoie:

Le code-barres rendu.

Type renvoyé:

PIL.Image.Image

Ajouté dans la version 0.11.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

get_rect_marks() SymbolMarks

Renvoie les barres sombres du code-barres sous forme de rectangles en unités de mise en page.

Type renvoyé:

pystrich.marks.SymbolMarks

Ajouté dans la version 0.18.

get_svg(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str

Génère le code-barres et renvoie le balisage SVG.

Paramètres:
  • bar_width – Largeur en unités utilisateur de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Type renvoyé:

str

Ajouté dans la version 0.12.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

png_dataurl(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str

Génère le code-barres et renvoie une chaîne d’URL data: PNG.

Paramètres:
  • bar_width – Largeur en pixels de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Type renvoyé:

str

Ajouté dans la version 0.15.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

save(filename: str | os.PathLike[str], bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None

Génère le code-barres dans un fichier PNG.

Paramètres:
  • filename – Chemin où écrire le PNG.

  • bar_width – Largeur en pixels de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

save_eps(filename: str | os.PathLike[str], bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None

Enregistre le code-barres dans un fichier EPS. Passez un nom de fichier .eps.

Paramètres:
  • filename – Chemin de sortie EPS.

  • bar_width – Largeur en points PostScript de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA, opaque. Blanc par défaut.

Ajouté dans la version 0.12.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

save_svg(filename: str | os.PathLike[str], bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None

Enregistre le code-barres dans un fichier SVG. Passez un nom de fichier .svg.

Paramètres:
  • filename – Chemin de sortie SVG.

  • bar_width – Largeur en unités utilisateur de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Ajouté dans la version 0.12.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

svg_dataurl(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str

Génère le code-barres et renvoie une chaîne d’URL data: SVG.

Paramètres:
  • bar_width – Largeur en unités utilisateur de la barre la plus étroite.

  • dark_hex – Couleur des barres et du texte, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Noir par défaut.

  • light_hex – Couleur de fond, sous forme de chaîne hexadécimale de 3, 6 ou 8 chiffres ou d’un RGBA. Blanc par défaut.

Type renvoyé:

str

Ajouté dans la version 0.15.

Modifié dans la version 0.16: Ajout de dark_hex et light_hex.

encode() tuple[str, str][source]

Encode le numéro du code-barres et renvoie les chaînes de données gauche et droite

get_parity() tuple[int, int, int, int, int, int][source]

Renvoie les correspondances de parité applicables à ce code

calculate_check_digit() int[source]

Calcule le chiffre de contrôle modulo 10 EAN-13 pour code.

En parcourant l’entrée de 12 chiffres de droite à gauche, les chiffres en position impaire sont pondérés par 3 et ceux en position paire par 1 ; le chiffre de contrôle est la valeur qui porte la somme pondérée à un multiple de 10.

init_renderer() EAN13Renderer[source]

Construit un EAN13Renderer pour le code encodé.

Type renvoyé:

EAN13Renderer

class EAN13RenderOptions

Bases : TypedDict

Réglages de rendu facultatifs pour les codes-barres EAN-13.

La disposition du libellé en EAN-13 est fixée par la norme ; il ne s’agit donc que d’un petit ensemble de réglages cosmétiques. Toutes les clés sont facultatives ; les clés omises se rabattent sur les valeurs par défaut de la bibliothèque.

Ajouté dans la version 0.11.

height: int

Hauteur totale de l’image en pixels (= unités utilisateur pour SVG/EPS à la résolution par défaut). Vaut par défaut la moitié de la largeur en pixels du symbole.

Ajouté dans la version 0.12.

first_digit_y_offset: float

De combien le premier chiffre est placé au-dessus du reste du texte, en fraction de la hauteur de l’image. Vaut 0.1 par défaut (l’aspect pyStrich de longue date, où le premier chiffre, celui du système de numérotation, est placé légèrement plus haut que les deux principaux groupes de chiffres). Réglez sur 0 pour une ligne de base commune aux trois groupes.