Gemeinsame Typen

Gemeinsame Typisierungshilfen für pyStrich-Encoder und -Renderer.

class BarcodeRenderOptions[Quellcode]

Bases: TypedDict

Optionale Anpassungen zur Renderzeit für 1D-Barcodes mit Beschriftung.

Derzeit verwendet von pystrich.code128.Code128Encoder und pystrich.code39.Code39Encoder. Alle Schlüssel sind optional; ausgelassene Schlüssel greifen auf die Bibliotheksvorgaben zurück.

show_label: bool

Ob die Klarschriftzeile unter den Strichen gerendert wird. Vorgabe True; setzen Sie ihn auf False, um sie zu unterdrücken.

ttf_font: str

Absoluter Pfad zu einer TrueType-Schriftdatei, die für die Beschriftung in der PNG-Ausgabe verwendet wird. Ohne Angabe wird eine mitgelieferte Bitmap-Schrift verwendet. SVG- und EPS-Ausgabe rendern die Beschriftung immer mit den mitgelieferten Courier-Prime-Glyphenpfaden und ignorieren diese Option.

ttf_fontsize: int

Schriftgröße in Punkt (nur PNG-Ausgabe – SVG/EPS verwenden die mitgelieferten Courier-Prime-Glyphenpfade).

height: int

Gesamte Bildhöhe in Pixeln. Vorgabe ist etwa ein Drittel der Bildbreite für Code 128 und 120 für Code 39.

label_border: int

Pixel an vertikalem Abstand zwischen den Strichen und der Beschriftung.

bottom_border: int

Pixel an vertikalem Abstand zwischen der Beschriftung und der Unterkante.

quiet_width_multiplier: int

Breite der Ruhezone auf jeder Seite, in Schmalstrichbreiten. Vorgabe 10, das von beiden Symbologien geforderte Minimum.

Matrix-Mark-Extraktion, gemeinsam genutzt von den Vektor-Renderern (SVG, EPS, DXF).

class MarkShape(*values)[Quellcode]

Bases: Enum

Wie gesetzte Zellen in der Vektorausgabe gruppiert und gezeichnet werden.

Jeder Wert wählt eine Gruppierung (ein MatrixMark pro Zelle oder eines pro horizontaler Folge) und – wo der Renderer es unterstützt – das pro Mark verwendete Zeichen-Primitiv.

HORIZONTAL_RUNS = 1

Maximale horizontale Folgen gesetzter Zellen, als gefüllte Rechtecke gezeichnet.

SQUARE_CELLS = 2

Ein 1x1-Bereich pro gesetzter Zelle, als gefülltes Rechteck gezeichnet.

CIRCULAR_CELLS = 3

Ein 1x1-Bereich pro gesetzter Zelle, als in die Zelle einbeschriebener gefüllter Kreis gezeichnet.

iter_horizontal_runs(matrix: Sequence[Sequence[int | None]], *, mark_values_when: bool) Iterator[tuple[int, int, int, int]][Quellcode]

Liefert jede maximale horizontale Folge von Zellen, deren Wahrheitswert mark_values_when entspricht.

mark_values_when=True markiert die dunklen (wahren) Zellen; False markiert die hellen Zellen (0 oder None). Jeder gelieferte Mark hat height=1.

iter_cells(matrix: Sequence[Sequence[int | None]], *, mark_values_when: bool) Iterator[tuple[int, int, int, int]][Quellcode]

Liefert einen 1x1-Mark für jede Zelle, deren Wahrheitswert mark_values_when entspricht.

iter_marks(matrix: Sequence[Sequence[int | None]], *, mark_values_when: bool, mark_shape: MarkShape) Iterator[tuple[int, int, int, int]][Quellcode]

Liefert MatrixMark-Bereiche für das gewählte mark_shape.

class TextLabel(text: str, x: float, y: float, font_size: int, anchor: str = 'start')[Quellcode]

Bases: NamedTuple

Ein Textstück, das in der Vektorausgabe unter den Strichen gerendert wird.

Koordinaten sind in Pixeln (= Benutzereinheiten für SVG/EPS bei Standard-DPI), und y ist die obere Kante des Textes – passend zur Konvention von PIL.ImageDraw.text(xy, ...) für den entsprechenden Rasterpfad. anchor steuert, wie sich x auf das Textstück bezieht: "start" ist die linke Kante, "middle" die Mitte, "end" die rechte Kante.

text: str

Alias für Feldnummer 0

x: float

Alias für Feldnummer 1

y: float

Alias für Feldnummer 2

font_size: int

Alias für Feldnummer 3

anchor: str

Alias für Feldnummer 4

class BarLayout(heights: Sequence[int], bar_width: int, quiet_left: int = 0, quiet_right: int = 0, quiet_top: int = 0, quiet_bottom: int = 0, labels: Sequence[TextLabel] = (), bearer_width: int = 0)[Quellcode]

Bases: NamedTuple

Pixelgenaues Layout eines 1D-Barcodes für jedes Ausgabeformat.

Alle Werte sind in Pixeln (= Benutzereinheiten für SVG/EPS bei Standard-DPI). heights[i] ist die Pixelhöhe des Strichs in Spalte i (0 ist eine Lücke). Jede Spalte ist bar_width Pixel breit. Die vier Ruhezonen rahmen das Symbol; quiet_left und quiet_top verschieben die Striche, während quiet_right und quiet_bottom nur die Zeichenfläche vergrößern. labels trägt die Klarschrift, die unter den Strichen gezeichnet wird, von den PNG-, SVG- und EPS-Pfaden identisch gerendert. bearer_width zeichnet, wenn positiv, einen Trägerbalken dieser Pixelstärke, der die Striche umrandet (wie von ITF-14 verwendet); er muss in die Ruhezonen eingerechnet werden, wobei die Beschriftung in der unteren Ruhezone außerhalb des Rahmens platziert wird.

heights: Sequence[int]

Alias für Feldnummer 0

bar_width: int

Alias für Feldnummer 1

quiet_left: int

Alias für Feldnummer 2

quiet_right: int

Alias für Feldnummer 3

quiet_top: int

Alias für Feldnummer 4

quiet_bottom: int

Alias für Feldnummer 5

labels: Sequence[TextLabel]

Alias für Feldnummer 6

bearer_width: int

Alias für Feldnummer 7

iter_bar_marks(heights: Sequence[int], bar_width: int, *, quiet_left: int = 0, quiet_top: int = 0) Iterator[tuple[int, int, int, int]][Quellcode]

Liefert einen MatrixMark pro maximaler Folge gleicher positiver Höhen.

Koordinaten und Abmessungen sind in Pixeln. heights[i] ist die Pixelhöhe des Strichs in Spalte i (0 ist eine Lücke; positive Werte sind Striche mit gemeinsamer Oberkante bei y = quiet_top). Jede Spalte ist bar_width Pixel breit. Benachbarte Spalten mit derselben positiven Höhe werden zu einem Mark zusammengefasst.

Nur quiet_left und quiet_top werden akzeptiert, weil sie die einzigen Versätze sind, die die Mark-Koordinaten beeinflussen; die rechte und untere Ruhezone sind Sache des Renderers (Zeichenflächen-/viewBox-Dimensionierung).

iter_bearer_marks(layout: BarLayout) Iterator[tuple[int, int, int, int]][Quellcode]

Liefert die vier Rechtecke eines Vollrahmen-Trägerbalkens.

Es wird nichts geliefert, wenn layout.bearer_width null ist. Der Rahmen umrandet nur die Striche – die obere und untere Linie grenzen an die Striche, und die Beschriftung (in der unteren Ruhezone) sitzt außerhalb des Rahmens. quiet_top nimmt die obere Linie auf, daher muss die Trägerstärke in die Ruhezonen eingerechnet werden.

iter_barcode_marks(layout: BarLayout) Iterator[tuple[int, int, int, int]][Quellcode]

Liefert jeden dunklen Mark eines 1D-Barcodes: seine Striche, dann seinen Trägerbalken.

Der einzige Einstiegspunkt, aus dem die PNG-, SVG- und EPS-Pfade rendern; er kombiniert das rohe iter_bar_marks()-Primitiv mit iter_bearer_marks().

Benutzerfreundliche Zusammenstellung von GS1-Application-Identifier-Nutzdaten.

Kombinieren Sie GS1Fixed- und GS1Variable-Instanzen mit der passenden Klassenmethode gs1() auf pystrich.code128.Code128Data oder pystrich.datamatrix.DataMatrixData, um GS1-128- oder GS1-Data-Matrix-Nutzdaten auszugeben, ohne FNC1-Trenner von Hand zu verwalten.

Die Bibliothek liefert kein Application-Identifier-Register: Aufrufer teilen mit, ob jedes Feld feste oder variable Länge hat, indem sie die Wrapper-Klasse wählen. FNC1-Trenner werden nach Feldern variabler Länge eingefügt, die nicht das letzte Element der Nutzdaten sind, sowie einmal ganz am Anfang der Nachricht.

Neu in Version 0.15.

class GS1Fixed(application_identifier: str, value: str)[Quellcode]

Bases: _GS1Field

Ein GS1-Application-Identifier-Feld fester Länge.

Das Lesegerät kennt die Datenlänge allein aus dem Application Identifier, daher ist nach dem Feld kein FNC1-Trenner nötig. Verwenden Sie es für Application Identifier wie (01) GTIN-14, (17) Verfallsdatum oder (11) Herstellungsdatum.

Parameter:
  • application_identifier – Der 2- bis 4-stellige Application Identifier.

  • value – Die Datenzeichenkette. Muss nichtleeres druckbares ASCII sein.

class GS1Variable(application_identifier: str, value: str)[Quellcode]

Bases: _GS1Field

Ein GS1-Application-Identifier-Feld variabler Länge.

Das Lesegerät kann allein aus dem Application Identifier nicht bestimmen, wo die Daten enden, daher folgt ein FNC1-Trenner, es sei denn, dies ist das letzte Feld der Nutzdaten. Verwenden Sie es für Application Identifier wie (10) Charge, (21) Seriennummer oder (240) zusätzliche Produktidentifikation.

Parameter:
  • application_identifier – Der 2- bis 4-stellige Application Identifier.

  • value – Die Datenzeichenkette. Muss nichtleeres druckbares ASCII sein.