Data Matrix¶
Data Matrix (ECC 200) est une symbologie 2D adaptée aux courtes charges utiles (payload), capable d’encoder jusqu’à 1558 caractères ASCII dans le plus grand symbole, de 144x144.
Voir aussi
Data Matrix sur Wikipédia pour des informations générales sur la symbologie elle-même.
Les codes-barres Data Matrix sont définis dans la norme ISO/IEC 16022 (Technologies de l’information – Techniques automatiques d’identification et de capture des données – Spécification de symbologie de code à barres Data Matrix).
Exemple¶
Encapsulez l’entrée dans DataMatrixData. Le plus simple est auto_encoding=True, qui choisit automatiquement l’encodage le plus restreint compatible avec l’entrée. Pour maîtriser la séquence d’octets encodée – imposer "ascii" pour une charge utile 7 bits (URL, identifiants, chaînes d’identifiant d’application GS1) ou exiger du Latin-1 / UTF-8 –, passez plutôt un encoding explicite ; voir Texte non ASCII ci-dessous.
from pystrich.datamatrix import DataMatrixData, DataMatrixEncoder
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", auto_encoding=True)
DataMatrixEncoder(payload).save_svg("datamatrix-example.svg")
Dimensionnement et zone de silence¶
L’argument cellsize de save() et get_imagedata() définit la longueur de côté, en pixels, d’un module (5 par défaut).
L’argument quiet_zone de DataMatrixEncoder définit la largeur (en modules) de la bordure blanche appliquée au moment du rendu. La spécification Data Matrix exige au moins un module de zone de silence de chaque côté ; pyStrich utilise 2 par défaut (défini par DATAMATRIX_DEFAULT_QUIET_ZONE). Réduisez à 1 pour le symbole le plus compact ; augmentez si votre procédé d’impression a tendance à déborder dans la marge.
Voir aussi
Impression des codes-barres pour des conseils sur le choix de cellsize pour une sortie imprimée.
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save("datamatrix-large.png", cellsize=10)
Forme du symbole¶
Les symboles Data Matrix sont carrés par défaut, mais peuvent aussi être rectangulaires – utile lorsqu’une bande d’étiquette est plus large que haute. L’argument symbol_shape de DataMatrixEncoder choisit entre les deux : "square" (par défaut) produit toujours un symbole carré, "rectangular" produit toujours l’une des six tailles rectangulaires (en levant une exception si la charge utile est trop longue pour la plus grande d’entre elles), et "auto" retient le symbole compatible dont l’aire est la plus petite.
payload = DataMatrixData("A1268172415", encoding="ascii")
DataMatrixEncoder(payload, symbol_shape="rectangular").save_svg("datamatrix-rectangular.svg")
Ajouté dans la version 0.17.
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).
from pystrich.marks import MarkShape
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save_svg("datamatrix.svg")
DataMatrixEncoder(payload).save_svg(
"datamatrix-circles.svg", mark_shape=MarkShape.CIRCULAR_CELLS
)
Par défaut |
|
|---|---|
Le viewBox du SVG est exprimé en unités de module, tandis que width et height sont mis à l’échelle par cellsize. Le mot-clé mark_shape choisit la façon dont les cellules marquées sont dessinées – des suites horizontales de rectangles (par défaut) ou un cercle plein par cellule.
Note
Les cellules circulaires sortent de la forme de module standard et la prise en charge par les décodeurs varie. Testez avec votre lecteur cible avant tout déploiement.
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.
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save("datamatrix.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).
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save_eps("datamatrix.eps")
L’argument cellsize est la longueur de côté d’un module en points PostScript (1 point = 1/72 de pouce).
Ajouté dans la version 0.12.
Sortie terminal¶
Pour un affichage rapide à l’écran, get_terminal_art() renvoie un rendu lisible par un lecteur de codes-barres à l’aide de demi-blocs Unicode. Chaque caractère représente deux lignes de la matrice et une colonne, de sorte que les cellules apparaissent à peu près carrées dans une police à chasse fixe classique de terminal.
print(DataMatrixEncoder(payload).get_terminal_art())
█▄▀ █ █▄█▄█ █▄▀▄█ █ █▄▀▄
█ ▀ ▀ █▄ █▀█ ▀ █▀ █▀ ▄
██ █▄█ ▄█ █▄ █▄█ ▀ ▄▄█▄
██▀▄▀██▀█ ▀▀▀██▀ ▄▄▄ █▄▄
██▀▄▄▀█▄▀█▄█▄██▄▀███▀▄█▄
█▄ ▄█ ██ █▄█▀█▄▀ █▀▀▀▄
█▀ ▄ ▄██ ▄▀██▀▀█▄▄ ▄ ▀▄
██ █▀█ █▀█▀▀▀▄█▄▀ █ ▄ ▄
█▀▀▄▄▀▄▀▀▄ ▄▀ ▄▀▄ ▀▀▄▄▄
█ ▀▄▄▀█▀▀▀▀▀▀ █▀ █▄▄█ ▄
█▄█▄▄▄▀▄▀ ▀ ▄ ▄▄█▀▀ ▀▄▀▄
█████▄▄██▄▄██▄█▄█████▄█▄
Par défaut, la sortie est encadrée par des codes d’échappement ANSI qui imposent un fond blanc et un premier plan noir, afin que le symbole se lise quel que soit le thème de couleurs du terminal. Passez ansi_bg=False pour une sortie simple (correcte uniquement sur un terminal à thème clair).
Ajouté dans la version 0.12.
Sortie DXF (CAO)¶
Pour les applications de marquage direct des pièces (direct part marking) – où le symbole est gravé ou marqué au laser sur une pièce physique –, get_dxf() renvoie une représentation DXF du symbole. Le DXF est le format de fichier lu par les outils de CAO et de FAO ; la sortie peut être transmise directement à l’outil de gravure ou de marquage. Le cellsize est exprimé dans vos units choisies ("mm" par défaut) plutôt qu’en pixels.
payload = DataMatrixData("A1268172415", encoding="ascii")
encoder = DataMatrixEncoder(payload)
with open("part.dxf", "w") as f:
f.write(encoder.get_dxf(cellsize=0.5, units="mm"))
Par défaut, inverse=True émet la géométrie des modules clairs, y compris la zone de silence – de sorte que la boîte englobante (bounding box) encadre le symbole. Passez inverse=False pour n’émettre que les modules sombres, ce qui correspond à l’apparence normale du symbole ; la boîte englobante épouse alors les cellules sombres et la zone de silence doit être réintroduite en aval.
Voir aussi
SAE AS9132B – norme de qualité aéronautique/défense pour les marques Data Matrix appliquées aux pièces métalliques ; publiée en Europe sous le nom de NF EN 9132 (Série aérospatiale – Exigences qualité du marquage des pièces en code-barres Data Matrix).
GS1 / FNC1¶
Voir aussi
GS1 DataMatrix Guideline – la référence faisant autorité pour le choix des identifiants d’application, les règles d’encodage et les exigences de qualité d’impression du GS1 Data Matrix.
Le GS1 Data Matrix utilise un mot de code FNC1 en première position pour signaler que la charge utile est une suite d’identifiants d’application GS1, puis de nouveau comme séparateur après tout identifiant d’application de longueur variable qui n’est pas le dernier élément du message. DataMatrixData.gs1() construit la charge utile à partir d’enveloppes de champ typées et gère automatiquement le placement des séparateurs. Encapsulez chaque paire identifiant d’application / valeur dans GS1Fixed pour les identifiants d’application dont la longueur de données est fixe, ou GS1Variable sinon :
from pystrich.datamatrix import DataMatrixData, DataMatrixEncoder
from pystrich.gs1 import GS1Fixed, GS1Variable
# (01) GTIN-14 -- pad a GTIN-13 with a leading "0" indicator digit.
payload = DataMatrixData.gs1(GS1Fixed("01", "05050070007664"))
DataMatrixEncoder(payload).save("gs1.png")
Une charge utile pharmaceutique ou de dispositif médical typique combine un GTIN avec une date de péremption et un numéro de lot. (01) et (17) sont de longueur fixe, donc GS1Fixed les déclare ; (10) est de longueur variable, donc GS1Variable le porte. Les GS1 General Specifications recommandent de placer les identifiants d’application de longueur variable en dernier – positionner (10) à la fin du message évite tout séparateur FNC1 entre les champs :
payload = DataMatrixData.gs1(
GS1Fixed("01", "09501234543213"),
GS1Fixed("17", "261231"),
GS1Variable("10", "BF07"),
)
DataMatrixEncoder(payload).save("gs1-multi-fixed.png")
Lorsqu’un identifiant d’application de longueur variable n’est pas le dernier champ, le séparateur FNC1 est inséré automatiquement :
payload = DataMatrixData.gs1(
GS1Variable("10", "BF07"),
GS1Variable("21", "19890519"),
)
DataMatrixEncoder(payload).save("gs1-multi.png")
Pour un contrôle total du flux de mots de code, passez FNC1 et les chaînes brutes identifiant d’application / valeur directement à DataMatrixData – c’est ce que fait gs1() en interne :
from pystrich.datamatrix import DataMatrixData, FNC1
payload = DataMatrixData(FNC1, "10BF07", FNC1, "2119890519", encoding="ascii")
Note
Les charges utiles GS1 Data Matrix doivent être en ASCII – les GS1 General Specifications restreignent les valeurs d’identifiant d’application à un jeu de caractères 7 bits (essentiellement l’ASCII). gs1() impose "ascii" ; lorsque vous placez FNC1 vous-même, ne le combinez pas avec des encodages non ASCII.
Obsolète depuis la version 0.11: L’ancien code déclenchait FNC1 en préfixant la charge utile par chr(231) – à l’origine un bogue de cette bibliothèque sur lequel des utilisateurs en aval ont fini par compter (voir issue #13). Le correctif de compatibilité fonctionne toujours mais émet un Fnc1WorkaroundCompatWarning. Le nouveau code devrait utiliser gs1() (ou FNC1 pour l’approche bas niveau).
Texte non ASCII¶
Le jeu de mots de code ASCII de Data Matrix ne couvre que les octets 0-127. Pour encoder quoi que ce soit en dehors de cette plage dans un symbole non GS1, encapsulez l’entrée dans DataMatrixData et soit passez auto_encoding=True (le constructeur choisit pour vous l’encodage le plus restreint compatible), soit précisez un encodage explicitement :
Encodage |
Comportement |
|---|---|
|
Lève |
|
Latin-1 – le jeu de caractères par défaut de Data Matrix selon l’ISO/IEC 16022. Les octets 128-255 sont émis via le mot de code Upper Shift (235) ; aucun préfixe ECI n’est requis et les décodeurs conformes détectent l’encodage automatiquement. |
|
Déclare ECI 26 une fois au début du symbole et encode l’entrée octet par octet. Les décodeurs conformes détectent l’encodage automatiquement. |
|
Mode permissif hérité. Les caractères non ASCII émettent |
Astuce
Pour le symbole le plus compact, préférez l’encodage le plus restrictif qui convient à vos données : "ascii" d’abord, puis "iso-8859-1", puis "utf-8". Chaque étape ajoute une surcharge – le Latin-1 consomme un mot de code supplémentaire par octet supérieur à 127, et l’UTF-8 ajoute un préfixe ECI de deux mots de code et émet des séquences multi-octets pour tout ce qui sort de l’ASCII. auto_encoding=True fait le même choix pour vous si vous préférez ne pas choisir à la main.
from pystrich.datamatrix import DataMatrixData, DataMatrixEncoder
# Latin-1: smaller symbol if all your input fits in one byte per char.
DataMatrixEncoder(DataMatrixData("Ich dachte, Sie wären kräftiger", encoding="iso-8859-1")).save("latin1.png")
# UTF-8: required for anything outside Latin-1 (€, CJK, emoji).
DataMatrixEncoder(DataMatrixData("€5 親切にしろ 🐻❄️", encoding="utf-8")).save("utf8.png")
Si vous passez une chaîne avec le mauvais encodage, l’erreur levée suggère l’encodage qui aurait fonctionné :
>>> from pystrich.datamatrix import DataMatrixData
>>> DataMatrixData("Ich dachte, Sie wären kräftiger", encoding="ascii")
Traceback (most recent call last):
...
pystrich.exceptions.PyStrichInvalidInput: DataMatrixData encoding ASCII cannot encode the input; try DataMatrixData('Ich dachte, Sie wären kräftiger', encoding='iso-8859-1') or pass auto_encoding=True to select an encoding automatically.
Modes d’encodage¶
pyStrich prend en charge les modes d’encodage suivants : ASCII/octets (avec appariement des chiffres), Text, C40 et X12. Le mode Base 256 n’est pas pris en charge pour le moment. En raison de doutes sur la prise en charge par les décodeurs/lecteurs, nous avons décidé de ne pas implémenter EDIFACT.[1]
Anatomie¶
Chaque région Data Matrix est construite à partir des trois mêmes éléments. Les tailles de 10x10 à 26x26 utilisent une seule région ; les tailles plus grandes répètent la région selon une grille 2x2, 4x4 ou 6x6. Le schéma ci-dessous annote un symbole ECC 200 de 36x36 (2x2 régions de 16x16).
Bordure en L pleine (solid L finder) – deux bords pleins (à gauche et en bas de chaque région) qui identifient la taille et l’orientation du symbole.
Motif de synchronisation (timing pattern) – les deux bords opposés de chaque région (en haut et à droite), alternant cellules sombres et claires pour que le lecteur puisse compter les modules à travers la région.
Zone de données (data area) – tout ce qui se trouve à l’intérieur des bords en L et de synchronisation de la région : les mots de code encodés plus la correction d’erreurs Reed-Solomon, reportés sur les cellules par l’algorithme de placement ECC 200.
Zone de silence (quiet zone) – marge blanche autour du symbole ; la spécification exige au moins un module, et pyStrich en utilise deux par défaut.
API¶
- class DataMatrixEncoder(text: DataMatrixData | str, *, quiet_zone: int = 2, force_byte_mode: bool = False, symbol_shape: Literal['square', 'rectangular', 'auto'] = 'square')[source]¶
Bases :
Matrix2DEncoder[int|None]Encode du texte sous forme de code-barres 2D Data Matrix (ECC 200).
La taille de la matrice est choisie automatiquement en fonction de la longueur de l’entrée. Encapsulez l’entrée dans
DataMatrixDataet passez unencodingexplicite parmi"ascii","iso-8859-1"ou"utf-8"— ou passezauto_encoding=Truepour laisser le constructeur choisir l’encodage le plus restreint qui convient. Pour produire un GS1 Data Matrix, préfixez la charge utile par le marqueurFNC1.Utilisation typique:
encoder = DataMatrixEncoder(DataMatrixData("Hallo", encoding="ascii")) encoder.save("hallo.png") # Or, let DataMatrixData pick the encoding: encoder = DataMatrixEncoder(DataMatrixData("Rausschmeißer", auto_encoding=True))
Une entrée
strsimple est également acceptée mais se rabat sur l’encodage obsolète"compat", qui signale les octets non ASCII et produit une sortie qui ne se décode pas correctement. Le nouveau code devrait toujours encapsuler l’entrée dansDataMatrixData.- Variables:
matrix – Liste 2D d’entiers (
0/1, ouNonepour les cellules non définies) décrivant le symbole avant le rendu.regions –
(h_regions, v_regions)— le nombre de régions en lesquelles le symbole est divisé horizontalement et verticalement.quiet_zone – Largeur, en modules, de la bordure blanche appliquée au moment du rendu.
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_dxf(cellsize: float = 1.0, inverse: bool = True, units: Literal['in', 'ft', 'mi', 'mm', 'cm', 'm'] | None = 'mm', *, mark_shape: MarkShape = MarkShape.SQUARE_CELLS) str¶
Renvoie une représentation DXF (CAO) du symbole.
- Paramètres:
cellsize – Longueur de côté d’un module en
units.inverse – Si
True(par défaut), les modules clairs sont dessinés comme des cellules pleines. SiFalse, ce sont les modules sombres qui sont dessinés, ce qui correspond à l’apparence normale du symbole.units – L’une des valeurs
"in","ft","mi","mm","cm"ou"m", ouNonepour « non spécifié » ($INSUNITS=0).mark_shape – Comment les cellules marquées sont groupées et dessinées.
- Type renvoyé:
Ajouté dans la version 0.9.
Modifié dans la version 0.12:
unitsprend désormais en charge"in","ft","mi","cm","m"etNone(non spécifié) ; auparavant, toute valeur autre que"mm"était silencieusement traitée comme non spécifiée.
- get_eps(cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Génère le symbole et renvoie le balisage EPS.
- Paramètres:
cellsize – Longueur de côté d’un module en points PostScript.
inverse – Si
True, marque les cellules claires au lieu des sombres.mark_shape – Comment les cellules marquées sont groupées et dessinées.
dark_hex – Couleur des modules sombres, 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(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) bytes¶
Génère le symbole et renvoie les octets PNG.
- Paramètres:
cellsize – Longueur de côté d’un module en pixels.
dark_hex – Couleur des modules sombres, 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(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) PILImage¶
Génère le symbole et renvoie une image Pillow.
- Paramètres:
cellsize – Longueur de côté d’un module en pixels.
dark_hex – Couleur des modules sombres, 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 symbole rendu.
- Type renvoyé:
Ajouté dans la version 0.11.
Modifié dans la version 0.16: Ajout de
dark_hexetlight_hex.
- get_rect_marks(*, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS) SymbolMarks¶
Renvoie les cellules sombres du symbole sous forme de rectangles en unités de module.
- Paramètres:
inverse – Si
True, marque les cellules claires au lieu des sombres.mark_shape – Comment les cellules marquées sont groupées et dessinées.
- Type renvoyé:
Ajouté dans la version 0.18.
- get_svg(cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Génère le symbole et renvoie le balisage SVG.
- Paramètres:
cellsize – Longueur de côté d’un module en unités utilisateur.
inverse – Si
True, marque les cellules claires au lieu des sombres.mark_shape – Comment les cellules marquées sont groupées et dessinées.
dark_hex – Couleur des modules sombres, 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.
- get_terminal_art(*, ansi_bg: bool = True) str¶
Génère le symbole à l’aide de demi-blocs Unicode pour les terminaux.
Chaque caractère représente deux lignes de la matrice et une colonne, produisant des cellules à peu près carrées dans une police à chasse fixe classique et donnant un résultat lisible par un lecteur de codes-barres à l’écran.
- Paramètres:
ansi_bg – Si
True(par défaut), encadre chaque ligne de codes d’échappement ANSI qui imposent un fond blanc et un premier plan noir, rendant le symbole lisible quel que soit le thème de couleurs du terminal. Mettez àFalsepour une sortie simple (correcte uniquement sur un terminal à thème clair).- Type renvoyé:
Ajouté dans la version 0.12.
- png_dataurl(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Génère le symbole et renvoie une chaîne d’URL
data:PNG.- Paramètres:
cellsize – Longueur de côté d’un module en pixels.
dark_hex – Couleur des modules sombres, 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], cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Enregistre le symbole en PNG. Passez un nom de fichier
.png.- Paramètres:
filename – Chemin de sortie PNG.
cellsize – Longueur de côté d’un module en pixels.
dark_hex – Couleur des modules sombres, 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], cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Enregistre le symbole dans un fichier EPS. Passez un nom de fichier
.eps.- Paramètres:
filename – Chemin de sortie EPS.
cellsize – Longueur de côté d’un module en points PostScript.
inverse – Si
True, marque les cellules claires au lieu des sombres.mark_shape – Comment les cellules marquées sont groupées et dessinées.
dark_hex – Couleur des modules sombres, 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], cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Enregistre le symbole dans un fichier SVG. Passez un nom de fichier
.svg.- Paramètres:
filename – Chemin de sortie SVG.
cellsize – Longueur de côté d’un module en unités utilisateur.
inverse – Si
True, marque les cellules claires au lieu des sombres.mark_shape – Comment les cellules marquées sont groupées et dessinées.
dark_hex – Couleur des modules sombres, 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(cellsize: int = 5, *, inverse: bool = False, mark_shape: MarkShape = MarkShape.HORIZONTAL_RUNS, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Génère le symbole et renvoie une chaîne d’URL
data:SVG.- Paramètres:
cellsize – Longueur de côté d’un module en unités utilisateur.
inverse – Si
True, marque les cellules claires au lieu des sombres.mark_shape – Comment les cellules marquées sont groupées et dessinées.
dark_hex – Couleur des modules sombres, 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 DataMatrixData(*segments: str | DataMatrixCodeword, encoding: Literal['compat', 'ascii', 'iso-8859-1', 'utf-8'] | None = None, auto_encoding: bool = False)¶
Bases :
EncodableData[Literal[“ascii”, “iso-8859-1”, “utf-8”],DataMatrixCodeword]Entrée d’encodeur composable mêlant des fragments de texte et des marqueurs de mots de code bruts.
Construisez les valeurs en concaténant des constantes marqueurs (par exemple
FNC1) avec des chaînes simples de part et d’autre, puis passez le résultat àDataMatrixEncoderà la place d’unstr.La construction nécessite soit un
encoding=explicite (l’un de"ascii","iso-8859-1","utf-8"ou l’ancien"compat"), soitauto_encoding=True. Avecauto_encoding=True, le constructeur choisit le plus restreint deascii,iso-8859-1,utf-8qui représente chaque segment ; tout argumentencoding=passé conjointement est ignoré."compat"est une option d’initialisation uniquement – elle déclenche l’ancienne transformation de mot de code ASCII+1 puis est stockée comme"ascii", de sorte queencodingest toujours l’un des trois jeux de caractères concrets après construction.Après construction,
segmentsest normalisé : les segments str consécutifs sont fusionnés, les str vides sont supprimés, et (pour"compat") chaque point de code dont le bit de poids fort est activé est remplacé par unDataMatrixCodewordportant l’ancienne valeurord + 1. L’encodeur ne voit donc jamais que des str purement encodables entrelacées avec des marqueurs de mots de code bruts.Ajouté dans la version 0.11.
Modifié dans la version 0.12: Les appelants doivent désormais passer soit un
encoding=explicite, soitauto_encoding=True. Ajout de l’optionauto_encoding.Obsolète depuis la version 0.11: L’encodage
"compat"n’est conservé que pour la rétrocompatibilité et sera supprimé dans une prochaine version. Le nouveau code devrait choisir"ascii","iso-8859-1"ou"utf-8"explicitement, ou utiliserauto_encoding=True.- classmethod gs1(*fields: GS1Fixed | GS1Variable) DataMatrixData¶
Construit une charge utile GS1 Data Matrix à partir de champs d’identifiant d’application typés.
Émet un
FNC1en tête (qui signale le symbole comme GS1 Data Matrix 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 GS1 General Specifications restreignent les valeurs d’identifiant d’application à 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 DataMatrixCodeword(value: int)¶
Bases :
objectUne valeur littérale de mot de code DataMatrix à émettre telle quelle.
La concaténation avec un
strsimple ou un autre mot de code (par exempleFNC1 + "...") est l’approche d’API moderne et produit unDataMatrixDatamarqué avec l’encodage strict"ascii". La concaténation avec unDataMatrixDataexistant préserve plutôt l’encodage de cet objet.Ajouté dans la version 0.11.
- pystrich.datamatrix.FNC1¶
Le marqueur GS1 FNC1 (mot de code Data Matrix 232). Une instance de
DataMatrixCodeword; concaténez avec des chaînes via+pour construire une charge utile GS1.Ajouté dans la version 0.11.