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")
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)
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")
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 :
Bar1DEncoderEncode 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é:
Ajouté dans la version 0.12.
Modifié dans la version 0.16: Ajout de
dark_hexetlight_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é:
Modifié dans la version 0.16: Ajout de
dark_hexetlight_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é:
Ajouté dans la version 0.11.
Modifié dans la version 0.16: Ajout de
dark_hexetlight_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é:
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é:
Ajouté dans la version 0.12.
Modifié dans la version 0.16: Ajout de
dark_hexetlight_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é:
Ajouté dans la version 0.15.
Modifié dans la version 0.16: Ajout de
dark_hexetlight_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_hexetlight_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_hexetlight_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_hexetlight_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é:
Ajouté dans la version 0.15.
Modifié dans la version 0.16: Ajout de
dark_hexetlight_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.
- class EAN13RenderOptions¶
Bases :
TypedDictRé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.1par 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 sur0pour une ligne de base commune aux trois groupes.