Data Matrix¶
Data Matrix (ECC 200) ist eine 2D-Symbologie für kurze Nutzdaten (payload), die im größten Symbol (144x144) bis zu 1558 ASCII-Zeichen codieren kann.
Siehe auch
Datamatrixcode auf Wikipedia für Hintergründe zur Symbologie selbst.
Data-Matrix-Codes sind in ISO/IEC 16022 definiert (Informationstechnik – Automatische Identifikation und Datenerfassungsverfahren – Data Matrix-Barcode-Symbologie-Spezifikation).
Beispiel¶
Kapseln Sie die Eingabe in DataMatrixData. Der einfachste Weg ist auto_encoding=True, das automatisch die schmalste Codierung wählt, die zur Eingabe passt. Für die Kontrolle über die codierte Byte-Folge – um "ascii" für 7-Bit-Nutzdaten zu erzwingen (URLs, Bezeichner, GS1-Application-Identifier-Zeichenketten) oder um Latin-1 / UTF-8 zu verlangen – übergeben Sie stattdessen ein explizites encoding; siehe Nicht-ASCII-Text weiter unten.
from pystrich.datamatrix import DataMatrixData, DataMatrixEncoder
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", auto_encoding=True)
DataMatrixEncoder(payload).save_svg("datamatrix-example.svg")
Größe und Ruhezone¶
Das Argument cellsize von save() und get_imagedata() legt die Kantenlänge eines Moduls in Pixeln fest (Vorgabe 5).
Das Argument quiet_zone von DataMatrixEncoder legt die Breite (in Modulen) des beim Rendern angewendeten weißen Rands fest. Die Data-Matrix-Spezifikation verlangt mindestens ein Modul Ruhezone auf jeder Seite; pyStrich verwendet standardmäßig 2 (festgelegt in DATAMATRIX_DEFAULT_QUIET_ZONE). Reduzieren Sie ihn auf 1 für das kompakteste Symbol; erhöhen Sie ihn, wenn Ihr Druckverfahren dazu neigt, in den Rand zu verlaufen.
Siehe auch
Barcodes drucken für Hinweise zur Wahl von cellsize bei gedruckter Ausgabe.
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save("datamatrix-large.png", cellsize=10)
Symbolform¶
Data-Matrix-Symbole sind standardmäßig quadratisch, können aber auch rechteckig sein – nützlich, wenn ein Etikettenstreifen breiter als hoch ist. Das Argument symbol_shape von DataMatrixEncoder wählt zwischen ihnen: "square" (die Vorgabe) erzeugt stets ein quadratisches Symbol, "rectangular" erzeugt stets eine der sechs rechteckigen Größen (und löst eine Ausnahme aus, wenn die Nutzdaten für die größte davon zu lang sind), und "auto" wählt unter den passenden Symbolen dasjenige mit der geringsten Fläche.
payload = DataMatrixData("A1268172415", encoding="ascii")
DataMatrixEncoder(payload, symbol_shape="rectangular").save_svg("datamatrix-rectangular.svg")
Neu in Version 0.17.
Ausgabeformate¶
SVG-Ausgabe¶
Zum Einbetten in Webseiten oder für jeden Arbeitsablauf, der von auflösungsunabhängiger Ausgabe profitiert, verwenden Sie save_svg() (oder get_svg(), um das SVG als Zeichenkette zu erhalten).
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
)
Vorgabe |
|
|---|---|
Die viewBox des SVG ist in Moduleinheiten angegeben, während width und height mit cellsize skalieren. Das Schlüsselwort mark_shape bestimmt, wie gesetzte Zellen gezeichnet werden – horizontale Folgen von Rechtecken (die Vorgabe) oder ein gefüllter Kreis pro Zelle.
Bemerkung
Runde Zellen liegen außerhalb der standardmäßigen Modulform und die Decoder-Unterstützung variiert. Testen Sie es vor dem Einsatz mit Ihrem Zielscanner.
Neu in Version 0.12.
PNG-Ausgabe¶
Verwenden Sie für die Rasterausgabe save(), um eine PNG-Datei zu schreiben, oder get_imagedata(), um die rohen PNG-Bytes zu erhalten.
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save("datamatrix.png")
EPS-Ausgabe¶
Verwenden Sie zum Einbetten in LaTeX (\includegraphics) oder andere Vektor-Druck-Arbeitsabläufe save_eps() (oder get_eps(), um das EPS als Zeichenkette zu erhalten).
payload = DataMatrixData("https://github.com/mmulqueen/pyStrich", encoding="ascii")
DataMatrixEncoder(payload).save_eps("datamatrix.eps")
Das Argument cellsize ist die Kantenlänge eines Moduls in PostScript-Punkten (1 Punkt = 1/72 Zoll).
Neu in Version 0.12.
Terminal-Ausgabe¶
Für schnelle Anzeige auf dem Bildschirm liefert get_terminal_art() eine vom Scanner lesbare Darstellung mit Unicode-Halbblockzeichen. Jedes Zeichen steht für zwei Matrixzeilen und eine Spalte, sodass die Zellen in einer typischen Terminalschrift mit fester Breite ungefähr quadratisch erscheinen.
print(DataMatrixEncoder(payload).get_terminal_art())
█▄▀ █ █▄█▄█ █▄▀▄█ █ █▄▀▄
█ ▀ ▀ █▄ █▀█ ▀ █▀ █▀ ▄
██ █▄█ ▄█ █▄ █▄█ ▀ ▄▄█▄
██▀▄▀██▀█ ▀▀▀██▀ ▄▄▄ █▄▄
██▀▄▄▀█▄▀█▄█▄██▄▀███▀▄█▄
█▄ ▄█ ██ █▄█▀█▄▀ █▀▀▀▄
█▀ ▄ ▄██ ▄▀██▀▀█▄▄ ▄ ▀▄
██ █▀█ █▀█▀▀▀▄█▄▀ █ ▄ ▄
█▀▀▄▄▀▄▀▀▄ ▄▀ ▄▀▄ ▀▀▄▄▄
█ ▀▄▄▀█▀▀▀▀▀▀ █▀ █▄▄█ ▄
█▄█▄▄▄▀▄▀ ▀ ▄ ▄▄█▀▀ ▀▄▀▄
█████▄▄██▄▄██▄█▄█████▄█▄
Standardmäßig wird die Ausgabe von ANSI-Escape-Codes umschlossen, die einen weißen Hintergrund und schwarzen Vordergrund erzwingen, sodass das Symbol unabhängig vom Farbschema des Terminals eingelesen werden kann. Übergeben Sie ansi_bg=False für eine einfache Ausgabe (nur auf einem hell gestalteten Terminal korrekt).
Neu in Version 0.12.
DXF-Ausgabe (CAD)¶
Für Anwendungen zur direkten Teilekennzeichnung (direct part marking) – bei denen das Symbol in ein physisches Teil graviert oder lasergeätzt wird – liefert get_dxf() eine DXF-Darstellung des Symbols. DXF ist das Dateiformat, das CAD- und CAM-Werkzeuge lesen; die Ausgabe kann direkt an das Gravier- oder Ätzwerkzeug übergeben werden. Die cellsize ist in Ihrer gewählten Einheit units (Vorgabe "mm") statt in Pixeln angegeben.
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"))
Die Vorgabe inverse=True gibt Geometrie für die hellen Module aus, einschließlich der Ruhezone – sodass der Begrenzungsrahmen (bounding box) das Symbol einrahmt. Übergeben Sie inverse=False, um stattdessen nur die dunklen Module auszugeben, was dem normalen Erscheinungsbild des Symbols entspricht; der Begrenzungsrahmen schmiegt sich dann an die dunklen Zellen an und die Ruhezone muss in der nachgelagerten Verarbeitung wieder hinzugefügt werden.
Siehe auch
SAE AS9132B – Qualitätsstandard aus Luft-/Raumfahrt und Verteidigung für Data-Matrix-Kennzeichnungen auf Metallteilen; in Deutschland veröffentlicht als DIN EN 9132 (Luft- und Raumfahrt – Qualitätsmanagementsysteme – Data Matrix Qualitätsanforderungen für Teilemarkierung).
GS1 / FNC1¶
Siehe auch
GS1-DataMatrix-Richtlinie – die maßgebliche Referenz für die Auswahl von Application Identifiern, Codierregeln und Druckqualitätsanforderungen für GS1 Data Matrix.
GS1 Data Matrix verwendet ein FNC1-Codewort als erstes Symbol, um zu signalisieren, dass die Nutzdaten eine Folge von GS1 Application Identifiern sind, und erneut als Trenner nach jedem Application Identifier variabler Länge, der nicht das letzte Element der Nachricht ist. DataMatrixData.gs1() baut die Nutzdaten aus typisierten Feld-Wrappern auf und übernimmt die Platzierung der Trenner automatisch. Kapseln Sie jedes Paar aus Application Identifier / Wert in GS1Fixed, wenn die Datenlänge des Application Identifiers fest ist, andernfalls in GS1Variable:
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")
Typische Nutzdaten für Pharma- / Medizinprodukte verbinden eine GTIN mit einem Verfallsdatum und einer Chargennummer. (01) und (17) haben feste Länge, also deklariert GS1Fixed sie; (10) hat variable Länge, also trägt GS1Variable es. Die GS1 General Specifications empfehlen, dass Application Identifier variabler Länge zuletzt kommen – (10) ans Ende der Nachricht zu stellen bedeutet, dass zwischen den Feldern kein FNC1-Trenner nötig ist:
payload = DataMatrixData.gs1(
GS1Fixed("01", "09501234543213"),
GS1Fixed("17", "261231"),
GS1Variable("10", "BF07"),
)
DataMatrixEncoder(payload).save("gs1-multi-fixed.png")
Wenn ein Application Identifier variabler Länge nicht das letzte Feld ist, wird der FNC1-Trenner automatisch eingefügt:
payload = DataMatrixData.gs1(
GS1Variable("10", "BF07"),
GS1Variable("21", "19890519"),
)
DataMatrixEncoder(payload).save("gs1-multi.png")
Übergeben Sie für volle Kontrolle über den Codewort-Strom FNC1 und die einfachen Zeichenketten aus Application Identifier / Wert direkt an DataMatrixData – das ist der Weg, den gs1() kapselt:
from pystrich.datamatrix import DataMatrixData, FNC1
payload = DataMatrixData(FNC1, "10BF07", FNC1, "2119890519", encoding="ascii")
Bemerkung
GS1-Data-Matrix-Nutzdaten müssen ASCII sein – die GS1 General Specifications beschränken Application-Identifier-Werte auf einen 7-Bit-Zeichensatz (im Wesentlichen ASCII). gs1() verwendet fest "ascii"; wenn Sie FNC1 selbst platzieren, kombinieren Sie es nicht mit Nicht-ASCII-Codierungen.
Veraltet ab Version 0.11: Älterer Code löste FNC1 aus, indem er den Nutzdaten chr(231) voranstellte – ursprünglich ein Fehler in dieser Bibliothek, auf den sich nachgelagerte Nutzer zu verlassen begannen (siehe Issue #13). Der Behelf funktioniert weiterhin, gibt aber eine Fnc1WorkaroundCompatWarning aus. Neuer Code sollte gs1() verwenden (oder FNC1 für den direkten Weg).
Nicht-ASCII-Text¶
Der ASCII-Codewortsatz von Data Matrix deckt nur die Bytes 0-127 ab. Um irgendetwas außerhalb dieses Bereichs in einem Nicht-GS1-Symbol zu codieren, kapseln Sie die Eingabe in DataMatrixData und übergeben Sie entweder auto_encoding=True (der Konstruktor wählt für Sie die schmalste passende Codierung) oder geben Sie eine Codierung explizit an:
Codierung |
Verhalten |
|---|---|
|
Löst |
|
Latin-1 – der standardmäßige Zeichensatz für Data Matrix gemäß ISO/IEC 16022. Die Bytes 128-255 werden über das Upper-Shift-Codewort (235) ausgegeben; kein ECI-Bezeichner ist nötig und konforme Decoder erkennen die Codierung automatisch. |
|
Deklariert einmal am Anfang des Symbols ECI 26 und codiert die Eingabe byteweise. Konforme Decoder erkennen die Codierung automatisch. |
|
Nachsichtiger Legacy-Modus. Nicht-ASCII-Zeichen geben |
Tipp
Bevorzugen Sie für das kompakteste Symbol die restriktivste Codierung, die zu Ihren Daten passt: zuerst "ascii", dann "iso-8859-1", dann "utf-8". Jeder Schritt fügt Mehraufwand hinzu – Latin-1 verbraucht ein zusätzliches Codewort pro hohem Byte, und UTF-8 fügt einen ECI-Bezeichner aus zwei Codewörtern hinzu und gibt Mehrbyte-Folgen für alles außerhalb von ASCII aus. auto_encoding=True trifft dieselbe Wahl für Sie, wenn Sie lieber nicht von Hand wählen möchten.
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")
Wenn Sie eine Zeichenkette mit der falschen Codierung übergeben, schlägt der ausgelöste Fehler die Codierung vor, die funktioniert hätte:
>>> 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.
Codierungsmodi¶
pyStrich unterstützt die folgenden Codierungsmodi: ASCII/Bytes (mit Paarung numerischer Ziffern), Text, C40 und X12. Base 256 wird derzeit nicht unterstützt. Wegen Bedenken hinsichtlich der Decoder-/Scanner-Unterstützung haben wir uns entschieden, EDIFACT nicht zu implementieren.[1]
Aufbau¶
Jede Data-Matrix-Region ist aus denselben drei Elementen aufgebaut. Größen von 10x10 bis 26x26 verwenden eine einzige Region; größere Größen kacheln die Region in einem 2x2-, 4x4- oder 6x6-Raster. Das Diagramm unten beschriftet ein 36x36-ECC-200-Symbol (2x2-Regionen von 16x16).
Durchgehende L-Begrenzung (Suchmuster, finder pattern) – zwei durchgehende Kanten (links und unten in jeder Region), die Größe und Ausrichtung des Symbols angeben.
Taktmuster (timing pattern) – die gegenüberliegenden zwei Kanten jeder Region (oben und rechts), mit abwechselnd dunklen und hellen Zellen, sodass der Scanner die Module quer über die Region zählen kann.
Datenbereich (data area) – alles innerhalb der L- und Taktkanten der Region: die codierten Codewörter plus Reed-Solomon-Fehlerkorrektur, durch den ECC-200-Platzierungsalgorithmus auf Zellen abgebildet.
Ruhezone (quiet zone) – weißer Rand um das Symbol; die Spezifikation verlangt mindestens ein Modul, und pyStrich verwendet standardmäßig zwei.
API¶
- class DataMatrixEncoder(text: DataMatrixData | str, *, quiet_zone: int = 2, force_byte_mode: bool = False, symbol_shape: Literal['square', 'rectangular', 'auto'] = 'square')[Quellcode]¶
Bases:
Matrix2DEncoder[int|None]Codiert Text als Data-Matrix-2D-Barcode (ECC 200).
Die Matrixgröße wird automatisch anhand der Eingabelänge gewählt. Kapseln Sie die Eingabe in
DataMatrixDataund übergeben Sie ein explizitesencodingvon"ascii","iso-8859-1"oder"utf-8"– oder übergeben Sieauto_encoding=True, damit der Konstruktor die schmalste passende Codierung wählt. Stellen Sie für ein GS1 Data Matrix den Nutzdaten denFNC1-Marker voran.Typische Verwendung:
encoder = DataMatrixEncoder(DataMatrixData("Hallo", encoding="ascii")) encoder.save("hallo.png") # Or, let DataMatrixData pick the encoding: encoder = DataMatrixEncoder(DataMatrixData("Rausschmeißer", auto_encoding=True))
Einfache
str-Eingabe wird ebenfalls akzeptiert, greift aber auf eine veraltete"compat"-Codierung zurück, die bei Nicht-ASCII-Bytes warnt und Ausgabe erzeugt, die sich nicht korrekt decodieren lässt. Neuer Code sollte die Eingabe immer inDataMatrixDatakapseln.- Variablen:
matrix – 2D-Liste von Ganzzahlen (
0/1oderNonefür ungesetzte Zellen), die das Symbol vor dem Rendern beschreibt.regions –
(h_regions, v_regions)— die Anzahl der Regionen, in die das Symbol horizontal und vertikal unterteilt ist.quiet_zone – Breite des beim Rendern angewendeten weißen Rands in Modulen.
width – Pixelbreite des zuletzt gerenderten Bildes.
0, bis eine Render-Methode aufgerufen wurde.height – Pixelhöhe des zuletzt gerenderten Bildes.
- 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¶
Gibt eine DXF-Darstellung (CAD) des Symbols zurück.
- Parameter:
cellsize – Kantenlänge eines Moduls in
units.inverse – Wenn
True(die Vorgabe), werden helle Module als gefüllte Zellen gezeichnet. WennFalse, werden dunkle Module gezeichnet, was dem normalen Erscheinungsbild des Symbols entspricht.units – Eines von
"in","ft","mi","mm","cm"oder"m"oderNonefür nicht angegeben ($INSUNITS=0).mark_shape – Wie gesetzte Zellen gruppiert und gezeichnet werden.
- Rückgabetyp:
Neu in Version 0.9.
Geändert in Version 0.12:
unitsunterstützt jetzt"in","ft","mi","cm","m"undNone(nicht angegeben); zuvor wurde jeder andere Wert als"mm"stillschweigend als nicht angegeben behandelt.
- 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¶
Rendert das Symbol und gibt EPS-Markup zurück.
- Parameter:
cellsize – Kantenlänge eines Moduls in PostScript-Punkten.
inverse – Wenn
True, die hellen statt der dunklen Zellen markieren.mark_shape – Wie gesetzte Zellen gruppiert und gezeichnet werden.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA, deckend. Standard ist Weiß.
- Rückgabetyp:
Neu in Version 0.12.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- get_imagedata(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) bytes¶
Rendert das Symbol und gibt PNG-Bytes zurück.
- Parameter:
cellsize – Kantenlänge eines Moduls in Pixeln.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
- Rückgabe:
PNG-codierte Bilddaten.
- Rückgabetyp:
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- get_pilimage(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) PILImage¶
Rendert das Symbol und gibt ein Pillow-Bild zurück.
- Parameter:
cellsize – Kantenlänge eines Moduls in Pixeln.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
- Rückgabe:
Das gerenderte Symbol.
- Rückgabetyp:
Neu in Version 0.11.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- 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¶
Rendert das Symbol und gibt SVG-Markup zurück.
- Parameter:
cellsize – Kantenlänge eines Moduls in Benutzereinheiten.
inverse – Wenn
True, die hellen statt der dunklen Zellen markieren.mark_shape – Wie gesetzte Zellen gruppiert und gezeichnet werden.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
- Rückgabetyp:
Neu in Version 0.12.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- get_terminal_art(*, ansi_bg: bool = True) str¶
Rendert das Symbol mit Unicode-Halbblockzeichen für Terminals.
Jedes Zeichen steht für zwei Matrixzeilen und eine Spalte, erzeugt näherungsweise quadratische Zellen in einer typischen Schrift mit fester Breite und liefert ein Ergebnis, das auf dem Bildschirm vom Scanner lesbar ist.
- Parameter:
ansi_bg – Wenn
True(die Vorgabe), jede Zeile in ANSI-Escape-Codes einschließen, die einen weißen Hintergrund und schwarzen Vordergrund erzwingen, sodass das Symbol unabhängig vom Farbschema des Terminals vom Scanner lesbar ist. Setzen Sie ihn aufFalsefür eine einfache Ausgabe (nur auf einem hell gestalteten Terminal korrekt).- Rückgabetyp:
Neu in Version 0.12.
- png_dataurl(cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Rendert das Symbol und gibt einen PNG-
data:-URL-String zurück.- Parameter:
cellsize – Kantenlänge eines Moduls in Pixeln.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
- Rückgabetyp:
Neu in Version 0.15.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- save(filename: str | os.PathLike[str], cellsize: int = 5, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Speichert das Symbol als PNG. Übergeben Sie einen
.png-Dateinamen.- Parameter:
filename – PNG-Ausgabepfad.
cellsize – Kantenlänge eines Moduls in Pixeln.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- 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¶
Speichert das Symbol als EPS-Datei. Übergeben Sie einen
.eps-Dateinamen.- Parameter:
filename – EPS-Ausgabepfad.
cellsize – Kantenlänge eines Moduls in PostScript-Punkten.
inverse – Wenn
True, die hellen statt der dunklen Zellen markieren.mark_shape – Wie gesetzte Zellen gruppiert und gezeichnet werden.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA, deckend. Standard ist Weiß.
Neu in Version 0.12.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- 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¶
Speichert das Symbol als SVG-Datei. Übergeben Sie einen
.svg-Dateinamen.- Parameter:
filename – SVG-Ausgabepfad.
cellsize – Kantenlänge eines Moduls in Benutzereinheiten.
inverse – Wenn
True, die hellen statt der dunklen Zellen markieren.mark_shape – Wie gesetzte Zellen gruppiert und gezeichnet werden.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
Neu in Version 0.12.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- 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¶
Rendert das Symbol und gibt einen SVG-
data:-URL-String zurück.- Parameter:
cellsize – Kantenlänge eines Moduls in Benutzereinheiten.
inverse – Wenn
True, die hellen statt der dunklen Zellen markieren.mark_shape – Wie gesetzte Zellen gruppiert und gezeichnet werden.
dark_hex – Farbe der dunklen Module als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Schwarz.light_hex – Hintergrundfarbe als 3-, 6- oder 8-stelliger Hex-String oder
RGBA. Standard ist Weiß.
- Rückgabetyp:
Neu in Version 0.15.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- init_renderer() DataMatrixRenderer[Quellcode]¶
Konstruiert einen
DataMatrixRendererfür die codierte Matrix.Aktualisiert
widthundheightmit den Pixelmaßen des Renderers und gibt den Renderer zurück.
- 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]Zusammensetzbare Encoder-Eingabe, die Textabschnitte mit Roh-Codewort-Markern mischt.
Bauen Sie Werte durch Verketten von Marker-Konstanten (z. B.
FNC1) mit einfachen Zeichenketten auf beiden Seiten auf und übergeben Sie das Ergebnis dann anstelle einesstranDataMatrixEncoder.Die Konstruktion erfordert entweder ein explizites
encoding=(eines von"ascii","iso-8859-1","utf-8"oder das veraltete"compat") oderauto_encoding=True. Mitauto_encoding=Truewählt der Konstruktor die schmalste vonascii,iso-8859-1,utf-8, die jedes Segment darstellt; ein daneben übergebenesencoding=-Argument wird ignoriert."compat"ist nur eine Option zur Initialisierungszeit – es löst die veraltete ASCII+1-Codewort-Transformation aus und wird anschließend als"ascii"gespeichert, sodassencodingnach der Konstruktion immer einer der drei konkreten Zeichensätze ist.Nach der Konstruktion wird
segmentsnormalisiert: aufeinanderfolgende str-Segmente werden zusammengeführt, leere strs verworfen, und (bei"compat") wird jeder Codepunkt mit gesetztem höchstwertigem Bit durch einDataMatrixCodewordmit dem veraltetenord + 1-Wert ersetzt. Der Encoder sieht daher immer nur rein codierbare strs im Wechsel mit Roh-Codewort-Markern.Neu in Version 0.11.
Geändert in Version 0.12: Aufrufer müssen jetzt entweder ein explizites
encoding=oderauto_encoding=Trueübergeben. Dasauto_encoding-Flag wurde hinzugefügt.Veraltet ab Version 0.11: Die
"compat"-Codierung wird nur aus Gründen der Abwärtskompatibilität beibehalten und in einer künftigen Version entfernt. Neuer Code sollte"ascii","iso-8859-1"oder"utf-8"explizit wählen oderauto_encoding=Trueverwenden.- classmethod gs1(*fields: GS1Fixed | GS1Variable) DataMatrixData¶
Baut GS1-Data-Matrix-Nutzdaten aus typisierten Application-Identifier-Feldern auf.
Gibt ein führendes
FNC1aus (das das Symbol gegenüber konformen Scannern als GS1 Data Matrix kennzeichnet), gefolgt vonapplication_identifier + valuefür jedes Feld, und fügt nach jedemGS1Variable, das nicht das letzte Element ist, einen weiterenFNC1-Trenner ein. ASCII ist fest vorgegeben – die GS1 General Specifications beschränken Application-Identifier-Werte auf einen 7-Bit-Zeichensatz.- Parameter:
fields – Eine oder mehrere
GS1Fixed- /GS1Variable-Instanzen. Einfache Zeichenketten werden nicht akzeptiert; kapseln Sie jedes Paar aus Application Identifier / Wert in die passende Feldklasse, damit bekannt ist, ob ihm FNC1 folgen soll.- Löst aus:
pystrich.exceptions.PyStrichInvalidOption – wenn
fieldsleer ist oder etwas anderes als die Feldklassen enthält.
Neu in Version 0.15.
- class DataMatrixCodeword(value: int)¶
Bases:
objectEin literaler DataMatrix-Codewort-Wert, der wortwörtlich ausgegeben wird.
Die Verkettung mit einem einfachen
stroder einem anderen Codewort (z. B.FNC1 + "...") ist der moderne API-Weg und erzeugt einDataMatrixDatamit der strikten"ascii"-Codierung. Die Verkettung mit einem bestehendenDataMatrixDatabewahrt stattdessen die Codierung dieses Objekts.Neu in Version 0.11.
- pystrich.datamatrix.FNC1¶
Der GS1-FNC1-Marker (Data-Matrix-Codewort 232). Eine Instanz von
DataMatrixCodeword; hängen Sie ihn mit+an Zeichenketten an, um GS1-Nutzdaten aufzubauen.Neu in Version 0.11.