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") [image: Code-barres EAN-13 encodant « 5050070007664 ».][image] 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) [image: Code-barres EAN-13 encodant « 5050070007664 » avec le libellé aligné sur une même ligne de base.][image] 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") [image: Code-barres EAN-13 SVG encodant « 5050070007664 ».][image] 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) 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] 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] Renvoie les correspondances de parité applicables à ce code calculate_check_digit() -> int 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 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.