Gemeinsame Typen¶
Gemeinsame Typisierungshilfen für pyStrich-Encoder und -Renderer.
- class BarcodeRenderOptions[Quellcode]¶
Bases:
TypedDictOptionale Anpassungen zur Renderzeit für 1D-Barcodes mit Beschriftung.
Derzeit verwendet von
pystrich.code128.Code128Encoderundpystrich.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 aufFalse, 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).
Matrix-Mark-Extraktion, gemeinsam genutzt von den Vektor-Renderern (SVG, EPS, DXF).
- class MarkShape(*values)[Quellcode]¶
Bases:
EnumWie gesetzte Zellen in der Vektorausgabe gruppiert und gezeichnet werden.
Jeder Wert wählt eine Gruppierung (ein
MatrixMarkpro 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_whenentspricht.mark_values_when=Truemarkiert die dunklen (wahren) Zellen;Falsemarkiert die hellen Zellen (0oderNone). Jeder gelieferte Mark hatheight=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_whenentspricht.
- 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ähltemark_shape.
- class TextLabel(text: str, x: float, y: float, font_size: int, anchor: str = 'start')[Quellcode]¶
Bases:
NamedTupleEin Textstück, das in der Vektorausgabe unter den Strichen gerendert wird.
Koordinaten sind in Pixeln (= Benutzereinheiten für SVG/EPS bei Standard-DPI), und
yist die obere Kante des Textes – passend zur Konvention vonPIL.ImageDraw.text(xy, ...)für den entsprechenden Rasterpfad.anchorsteuert, wie sichxauf das Textstück bezieht:"start"ist die linke Kante,"middle"die Mitte,"end"die rechte Kante.
- 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:
NamedTuplePixelgenaues 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 Spaltei(0ist eine Lücke). Jede Spalte istbar_widthPixel breit. Die vier Ruhezonen rahmen das Symbol;quiet_leftundquiet_topverschieben die Striche, währendquiet_rightundquiet_bottomnur die Zeichenfläche vergrößern.labelsträgt die Klarschrift, die unter den Strichen gezeichnet wird, von den PNG-, SVG- und EPS-Pfaden identisch gerendert.bearer_widthzeichnet, 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.
- 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
MatrixMarkpro maximaler Folge gleicher positiver Höhen.Koordinaten und Abmessungen sind in Pixeln.
heights[i]ist die Pixelhöhe des Strichs in Spaltei(0ist eine Lücke; positive Werte sind Striche mit gemeinsamer Oberkante beiy = quiet_top). Jede Spalte istbar_widthPixel breit. Benachbarte Spalten mit derselben positiven Höhe werden zu einem Mark zusammengefasst.Nur
quiet_leftundquiet_topwerden 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_widthnull 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_topnimmt 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 mititer_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:
_GS1FieldEin 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:
_GS1FieldEin 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.