Code 128¶
Code 128 est une symbologie 1D à haute densité couvrant toute la plage ASCII. pyStrich bascule automatiquement entre les jeux de codes A, B et C pour minimiser la longueur du symbole, et calcule la somme de contrôle modulo 103 pour vous.
Voir aussi
Code 128 sur Wikipédia pour des informations générales sur la symbologie elle-même.
Les codes-barres Code 128 sont définis dans la norme ISO/IEC 15417 (Technologies de l’information – Techniques automatiques d’identification et de capture des données – Spécifications des symbologies des codes à barres – Code 128).
Exemple¶
from pystrich.code128 import Code128Encoder
encoder = Code128Encoder("WDBCA45D2HA327260")
encoder.save_svg("code128-example.svg")
GS1-128¶
Voir aussi
GS1-128 sur Wikipédia pour des informations générales sur la variante GS1.
GS1-128 est un Code 128 comportant un FNC1 en première position de données, signalant que la charge utile est une suite d’identifiants d’application GS1. Code128Data.gs1() construit la charge utile à partir d’enveloppes de champ typées et gère automatiquement le placement des FNC1 – un au début du message et un après chaque identifiant d’application de longueur variable qui n’est pas le dernier élément. Encapsulez chaque paire identifiant d’application / valeur dans GS1Fixed pour les identifiants d’application de longueur fixe ((01), (17), (11) etc.) ou GS1Variable sinon. Les GS1 General Specifications recommandent de placer les identifiants d’application de longueur variable en dernier :
from pystrich.code128 import Code128Data, Code128Encoder
from pystrich.gs1 import GS1Fixed, GS1Variable
# (01) GTIN + (17) expiry YYMMDD + (10) batch
payload = Code128Data.gs1(
GS1Fixed("01", "09501234543213"),
GS1Fixed("17", "261231"),
GS1Variable("10", "BF07"),
)
Code128Encoder(payload).save("code128-gs1.png")
Pour un contrôle total du flux de mots de code – ou pour mêler des segments FNC2, FNC3 ou Latin-1 aux marqueurs GS1 –, passez FNC1 et les chaînes brutes identifiant d’application / valeur directement à Code128Data ; c’est ce que fait gs1() en interne.
Texte Latin-1¶
Pour une entrée Latin-1, encapsulez la charge utile dans Code128Data avec encoding="iso-8859-1" (ou auto_encoding=True). Les octets 128-255 émettent un décalage simple (single-shift) FNC4 dans le flux de mots de code ; les caractères hors Latin-1 sont rejetés.
from pystrich.code128 import Code128Data, Code128Encoder
Code128Encoder(
Code128Data("Rausschmeißer", encoding="iso-8859-1")
).save("code128-latin1.png")
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).
Le dictionnaire options passé à Code128Encoder contrôle le libellé en clair et la mise en page environnante. Toutes les clés sont facultatives.
show_labelIndique si le libellé en clair doit être rendu sous les barres. Vaut
Truepar défaut ; réglez surFalsepour le supprimer.ttf_fontChemin absolu vers un fichier de police TrueType utilisé pour le libellé. À défaut, une police bitmap fournie est utilisée.
ttf_fontsizeTaille de police en points.
heightHauteur totale de l’image en pixels. Vaut par défaut environ un tiers de la largeur de l’image.
label_borderEspace vertical, en pixels, entre les barres et le libellé.
bottom_borderEspace vertical, en pixels, entre le libellé et le bord inférieur.
Voir aussi
Impression des codes-barres pour des conseils sur le choix de bar_width pour une sortie imprimée.
options = {
"height": 200,
"label_border": 10,
"bottom_border": 10,
"ttf_fontsize": 24,
# "ttf_font": "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
}
encoder = Code128Encoder("WDBCA45D2HA327260", options=options)
encoder.save("code128-custom.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).
Code128Encoder("WDBCA45D2HA327260").save_svg("code128.svg")
Le viewBox du SVG est exprimé en unités de module (une barre étroite = une unité), tandis que width et height sont mis à l’échelle par bar_width. Les zones de silence de 10 modules imposées par la norme sont appliquées automatiquement de chaque côté.
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.
Code128Encoder("WDBCA45D2HA327260").save("code128.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).
Code128Encoder("WDBCA45D2HA327260").save_eps("code128.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 de 10 modules sont appliquées automatiquement.
Ajouté dans la version 0.12.
API¶
- class Code128Encoder(text: str | Code128Data, options: BarcodeRenderOptions | None = None)[source]¶
Bases :
Bar1DEncoderEncode une chaîne sous forme de code-barres 1D Code 128.
Les jeux de codes A, B et C basculent automatiquement pour minimiser la longueur du symbole. La somme de contrôle modulo 103 est calculée et ajoutée pour vous.
Utilisation typique:
encoder = Code128Encoder("nm0000385") encoder.save("barcode.png")
- Variables:
text – Le texte d’entrée d’origine.
encoded_text – Liste des valeurs de code produites par l’encodeur de texte, y compris les codes de départ et les basculements de jeu de codes.
checksum – La valeur de la somme de contrôle modulo 103.
bars – Le motif de barres et d’espaces sous forme de chaîne de
"1"et de"0".options – Dictionnaire d’options de rendu (vide si aucune n’a été fournie).
width – Largeur en pixels de la dernière image rendue.
0tant qu’aucune méthode de rendu n’a été appelée.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.
- class Code128Data(*segments: str | Code128Marker, encoding: Literal['ascii', 'iso-8859-1'] | None = None, auto_encoding: bool = False)¶
Bases :
EncodableData[Literal[“ascii”, “iso-8859-1”],Code128Marker]Entrée d’encodeur composable mêlant des fragments de texte et des jetons marqueurs FNC.
Construisez les valeurs en concaténant des constantes marqueurs avec des chaînes simples de part et d’autre, puis passez le résultat à
Code128Encoderà la place d’unstr:from pystrich.code128 import Code128Encoder, FNC1 encoder = Code128Encoder(FNC1 + "10ABC" + FNC1 + "21XYZ")
Passez
encoding="iso-8859-1"(ouauto_encoding=True) pour intégrer des caractères du supplément Latin-1 ; l’encodeur émet de façon transparente les décalages FNC4 de Code 128. Avecencoding="ascii", les anciens points de code\xf1..\xf4sont rejetés avec un message renvoyant vers les constantes marqueurs typées.- classmethod gs1(*fields: GS1Fixed | GS1Variable) Code128Data¶
Construit une charge utile GS1-128 à partir de champs d’identifiant d’application typés.
Émet un
FNC1en tête (qui signale le symbole comme GS1-128 aux lecteurs conformes) suivi deapplication_identifier + valuepour chaque champ, en insérant un séparateurFNC1supplémentaire après chaqueGS1Variablequi n’est pas le dernier élément. L’ASCII est imposé – les valeurs d’identifiant d’application GS1 sont restreintes à un jeu de caractères 7 bits.- Paramètres:
fields – Une ou plusieurs instances de
GS1Fixed/GS1Variable. Les chaînes simples ne sont pas acceptées ; encapsulez chaque paire identifiant d’application / valeur dans la classe de champ appropriée afin que nous sachions s’il faut la faire suivre d’un FNC1.- Lève:
pystrich.exceptions.PyStrichInvalidOption – si
fieldsest vide ou contient autre chose que les classes de champ.
Ajouté dans la version 0.15.
- class Code128Marker(name: str)¶
Bases :
objectUn marqueur FNC typé destiné à être inclus dans une valeur
Code128Data.Utilisez les constantes de niveau module (
FNC1,FNC2,FNC3) ; la concaténation avec unstrsimple ou un autreCode128Marker(par exempleFNC1 + "10ABC") construit unCode128Data. FNC4 n’est pas exposé comme marqueur public — l’entrée Latin-1 s’obtient plutôt viaencoding="iso-8859-1"surCode128Data.- codeword_for_charset(charset: Literal['A', 'B', 'C']) int¶
Renvoie le mot de code de ce marqueur dans
charset, ou lève une exception si le marqueur n’y est pas représentable.
- pystrich.code128.FNC1¶
- pystrich.code128.FNC2¶
- pystrich.code128.FNC3¶
Constantes de marqueurs FNC (instances de
Code128Marker). Concaténez avec des chaînes via+pour construire unCode128Data;FNC1en première position fait du symbole un GS1-128 (voirCode128Data.gs1()pour l’API structurée).