Code 128¶
Code 128 ist eine hochdichte 1D-Symbologie, die den gesamten ASCII-Bereich abdeckt. pyStrich schaltet automatisch zwischen den Code-Sets A, B und C um, um die Symbollänge zu minimieren, und berechnet die Mod-103-Prüfsumme für Sie.
Siehe auch
Code 128 auf Wikipedia für Hintergründe zur Symbologie selbst.
Code-128-Barcodes sind in ISO/IEC 15417 definiert (Informationstechnik – Verfahren der automatischen Identifikation und Datenerfassung – Spezifikationen für Strichcode-Symbologien; Code 128).
Beispiel¶
from pystrich.code128 import Code128Encoder
encoder = Code128Encoder("WDBCA45D2HA327260")
encoder.save_svg("code128-example.svg")
GS1-128¶
Siehe auch
GS1-128 auf Wikipedia für Hintergründe zur GS1-Variante.
GS1-128 ist Code 128 mit einem FNC1 an der ersten Datenposition, das signalisiert, dass die Nutzdaten eine Folge von GS1 Application Identifiern sind. Code128Data.gs1() baut die Nutzdaten aus typisierten Feld-Wrappern auf und übernimmt die FNC1-Platzierung automatisch – eines am Anfang der Nachricht und eines nach jedem Application Identifier variabler Länge, der nicht das letzte Element ist. Kapseln Sie jedes Paar aus Application Identifier / Wert in GS1Fixed für Application Identifier fester Länge ((01), (17), (11) …) oder andernfalls in GS1Variable. Die GS1 General Specifications empfehlen, dass Application Identifier variabler Länge zuletzt kommen:
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")
Übergeben Sie für volle Kontrolle über den Codewort-Strom – oder um FNC2-, FNC3- oder Latin-1-Segmente mit den GS1-Markern zu mischen – FNC1 und die einfachen Zeichenketten aus Application Identifier / Wert direkt an Code128Data; das ist der Weg, den gs1() kapselt.
Latin-1-Text¶
Kapseln Sie für Latin-1-Eingabe die Nutzdaten in Code128Data mit encoding="iso-8859-1" (oder auto_encoding=True). Die Bytes 128-255 geben einen FNC4-Single-Shift im Codewort-Strom aus; Zeichen außerhalb von Latin-1 werden abgelehnt.
from pystrich.code128 import Code128Data, Code128Encoder
Code128Encoder(
Code128Data("Rausschmeißer", encoding="iso-8859-1")
).save("code128-latin1.png")
Größe, Beschriftung, Schrift und Layout¶
Das Argument bar_width von save() und get_imagedata() legt die Pixelbreite des schmalsten Strichs fest (Vorgabe 3).
Das an Code128Encoder übergebene options-Dict steuert die Klarschriftzeile und das umgebende Layout. Alle Schlüssel sind optional.
show_labelOb die Klarschriftzeile unter den Strichen gerendert wird. Vorgabe
True; setzen Sie ihn aufFalse, um sie zu unterdrücken.ttf_fontAbsoluter Pfad zu einer TrueType-Schriftdatei, die für die Beschriftung verwendet wird. Ohne Angabe wird eine mitgelieferte Bitmap-Schrift verwendet.
ttf_fontsizeSchriftgröße in Punkt.
heightGesamte Bildhöhe in Pixeln. Vorgabe ist etwa ein Drittel der Bildbreite.
label_borderPixel an vertikalem Abstand zwischen den Strichen und der Beschriftung.
bottom_borderPixel an vertikalem Abstand zwischen der Beschriftung und der Unterkante.
Siehe auch
Barcodes drucken für Hinweise zur Wahl von bar_width bei gedruckter Ausgabe.
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)
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).
Code128Encoder("WDBCA45D2HA327260").save_svg("code128.svg")
Die viewBox des SVG ist in Moduleinheiten angegeben (ein Schmalstrich = eine Einheit), während width und height mit bar_width skalieren. Die vom Standard geforderten Ruhezonen von 10 Modulen werden automatisch auf jeder Seite angewendet.
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.
Code128Encoder("WDBCA45D2HA327260").save("code128.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).
Code128Encoder("WDBCA45D2HA327260").save_eps("code128.eps")
Das Argument bar_width ist die Breite des schmalsten Strichs in PostScript-Punkten (1 Punkt = 1/72 Zoll). Die Ruhezonen von 10 Modulen werden automatisch angewendet.
Neu in Version 0.12.
API¶
- class Code128Encoder(text: str | Code128Data, options: BarcodeRenderOptions | None = None)[Quellcode]¶
Bases:
Bar1DEncoderCodiert eine Zeichenkette als Code-128-1D-Barcode.
Die Code-Sets A, B und C werden automatisch umgeschaltet, um die Symbollänge zu minimieren. Die Mod-103-Prüfsumme wird berechnet und für Sie angehängt.
Typische Verwendung:
encoder = Code128Encoder("nm0000385") encoder.save("barcode.png")
- Variablen:
text – Der ursprüngliche Eingabetext.
encoded_text – Liste der vom Text-Encoder erzeugten Codewerte, einschließlich Startcodes und Code-Set-Umschaltungen.
checksum – Der Wert der Mod-103-Prüfsumme.
bars – Das Strich-/Lücken-Muster als Zeichenkette aus
"1"und"0".options – Options-Dict zur Renderzeit (leer, wenn keine angegeben wurden).
width – Pixelbreite des zuletzt gerenderten Bildes.
0, bis eine Render-Methode aufgerufen wurde.height – Pixelhöhe des zuletzt gerenderten Bildes.
- get_eps(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Rendert den Barcode und gibt EPS-Markup zurück.
- Parameter:
bar_width – Breite des schmalsten Strichs in PostScript-Punkten.
dark_hex – Strich- und Textfarbe 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(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) bytes¶
Rendert den Barcode und gibt PNG-Bytes zurück.
- Parameter:
bar_width – Breite des schmalsten Strichs in Pixeln.
dark_hex – Strich- und Textfarbe 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(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) PILImage¶
Rendert den Barcode und gibt ein Pillow-Bild zurück.
- Parameter:
bar_width – Breite des schmalsten Strichs in Pixeln.
dark_hex – Strich- und Textfarbe 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:
Der gerenderte Barcode.
- Rückgabetyp:
Neu in Version 0.11.
Geändert in Version 0.16:
dark_hexundlight_hexhinzugefügt.
- get_svg(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Rendert den Barcode und gibt SVG-Markup zurück.
- Parameter:
bar_width – Breite des schmalsten Strichs in Benutzereinheiten.
dark_hex – Strich- und Textfarbe 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.
- png_dataurl(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Rendert den Barcode und gibt einen PNG-
data:-URL-String zurück.- Parameter:
bar_width – Breite des schmalsten Strichs in Pixeln.
dark_hex – Strich- und Textfarbe 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], bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Rendert den Barcode in eine PNG-Datei.
- Parameter:
filename – Pfad, in den das PNG geschrieben wird.
bar_width – Breite des schmalsten Strichs in Pixeln.
dark_hex – Strich- und Textfarbe 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], bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Speichert den Barcode als EPS-Datei. Übergeben Sie einen
.eps-Dateinamen.- Parameter:
filename – EPS-Ausgabepfad.
bar_width – Breite des schmalsten Strichs in PostScript-Punkten.
dark_hex – Strich- und Textfarbe 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], bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) None¶
Speichert den Barcode als SVG-Datei. Übergeben Sie einen
.svg-Dateinamen.- Parameter:
filename – SVG-Ausgabepfad.
bar_width – Breite des schmalsten Strichs in Benutzereinheiten.
dark_hex – Strich- und Textfarbe 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(bar_width: int = 3, *, dark_hex: str | RGBA | None = None, light_hex: str | RGBA | None = None) str¶
Rendert den Barcode und gibt einen SVG-
data:-URL-String zurück.- Parameter:
bar_width – Breite des schmalsten Strichs in Benutzereinheiten.
dark_hex – Strich- und Textfarbe 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.
- calculate_check_sum() int[Quellcode]¶
Berechnet die Code-128-Mod-103-Prüfsumme für
encoded_text.Der Startcode geht mit Gewicht 1 ein; nachfolgende Symbole werden vor der Modulo-Bildung mit ihrer 1-basierten Position gewichtet.
- init_renderer() Code128Renderer[Quellcode]¶
Konstruiert einen
Code128Rendererfür die codierten Striche.- Rückgabetyp:
Code128Renderer
- 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]Zusammensetzbare Encoder-Eingabe, die Textabschnitte mit FNC-Marker-Tokens mischt.
Bauen Sie Werte durch Verketten von Marker-Konstanten mit einfachen Zeichenketten auf beiden Seiten auf und übergeben Sie das Ergebnis dann anstelle eines
stranCode128Encoder:from pystrich.code128 import Code128Encoder, FNC1 encoder = Code128Encoder(FNC1 + "10ABC" + FNC1 + "21XYZ")
Übergeben Sie
encoding="iso-8859-1"(oderauto_encoding=True), um Latin-1-Zusatzzeichen einzubetten; der Encoder gibt automatisch die Code-128-FNC4-Shifts aus. Mitencoding="ascii"werden die veralteten Magic-Byte-Codepunkte (\xf1..\xf4) mit einer Meldung abgelehnt, die auf die typisierten Marker-Konstanten verweist.- classmethod gs1(*fields: GS1Fixed | GS1Variable) Code128Data¶
Baut GS1-128-Nutzdaten aus typisierten Application-Identifier-Feldern auf.
Gibt ein führendes
FNC1aus (das das Symbol gegenüber konformen Scannern als GS1-128 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 – GS1-Application-Identifier-Werte sind auf einen 7-Bit-Zeichensatz beschränkt.- 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 Code128Marker(name: str)¶
Bases:
objectEin typisierter FNC-Marker zur Aufnahme in einen
Code128Data-Wert.Verwenden Sie die Konstanten auf Modulebene (
FNC1,FNC2,FNC3); die Verkettung mit einem einfachenstroder einem anderenCode128Marker(z. B.FNC1 + "10ABC") baut einCode128Data. FNC4 ist nicht als öffentlicher Marker verfügbar – Latin-1-Eingabe wird stattdessen überencoding="iso-8859-1"beiCode128Dataerreicht.- codeword_for_charset(charset: Literal['A', 'B', 'C']) int¶
Gibt das Codewort für diesen Marker in
charsetzurück oder löst aus, wenn der Marker dort nicht darstellbar ist.
- pystrich.code128.FNC1¶
- pystrich.code128.FNC2¶
- pystrich.code128.FNC3¶
FNC-Marker-Konstanten (Instanzen von
Code128Marker). Hängen Sie sie mit+an Zeichenketten an, um einCode128Dataaufzubauen;FNC1an erster Position macht das Symbol zu einem GS1-128 (sieheCode128Data.gs1()für die strukturierte API).