EAN-13 ****** EAN-13 ist der Handelsprodukt-Barcode für eine GTIN-13 -- den von GS1 vergebenen 13-stelligen globalen Bezeichner, der auf nahezu jedem Konsumprodukt aufgedruckt ist. Übergeben Sie entweder 12 Ziffern (die Prüfziffer wird berechnet und angehängt) oder 13 Ziffern (die letzte Ziffer wird als Prüfziffer behandelt und neu berechnet). Siehe auch: European Article Number auf Wikipedia für Hintergründe zur Symbologie selbst. EAN-13 ist in ISO/IEC 15420 definiert (Informationstechnik -- Automatische Identifikation und Datenerfassungsverfahren -- EAN/UPC- Barcode-Symbologie-Spezifikation). Warnung: Reale EAN-13-Codes müssen Ihrer Organisation von GS1 zugeteilt werden; Sie können nicht einfach einen erfinden. Einen Code zu erfinden erzeugt zwar einen lesbaren Barcode, aber er kollidiert mit den Produktdatenbanken des Handels -- oder wird von ihnen abgelehnt. Die in den Beispielen dieser Seite verwendete Nummer, "5050070007664", ist die GTIN eines echten Produkts (einer DVD von *Road House*). Die Eingabe muss aus genau 12 oder 13 Ziffern bestehen, ASCII "0"-"9". Alles andere löst "PyStrichInvalidInput" aus. Die Klarschriftzeile unter den Strichen ist durch die EAN-13-Spezifikation vorgeschrieben und wird immer gerendert; die einzige Anpassungsmöglichkeit ist das kosmetische "EAN13RenderOptions"-Dict (siehe Größe, Beschriftung, Schrift und Layout unten). Die Prüfziffer wird immer von pyStrich berechnet; übergeben Sie entweder 12 Ziffern (sie wird angehängt) oder 13 Ziffern (die gelieferte letzte Ziffer wird verworfen und neu berechnet): >>> from pystrich.ean13 import EAN13Encoder >>> EAN13Encoder("505007000766").full_code '5050070007664' >>> EAN13Encoder("5050070007660").full_code '5050070007664' Beispiel ======== from pystrich.ean13 import EAN13Encoder encoder = EAN13Encoder("5050070007664") encoder.save_svg("ean13-example.svg") [Bild: EAN-13-Barcode, der "5050070007664" codiert.][Bild] Größe, Beschriftung, Schrift und Layout ======================================= Das Argument "bar_width" von "save()" und "get_imagedata()" legt die Pixelbreite des schmalsten Strichs fest (Vorgabe "3"). Die GS1-Spezifikation schreibt eine asymmetrische Ruhezone (Weißraum) von 11 Modulen links und 7 Modulen rechts des Symbols vor; pyStrich rendert diese automatisch und sie ist nicht konfigurierbar. Wenn Sie das gespeicherte PNG in ein anderes Bild einfügen, schneiden Sie nicht in den weißen Rand hinein, sonst können Handelsscanner das Symbol möglicherweise nicht lesen. Geändert in Version 0.11: Die Ruhezone betrug zuvor 9 Module auf jeder Seite, was links unter der Spezifikation liegt. Standardmäßig zeichnet pyStrich die führende Ziffer des Nummernsystems etwas höher als die beiden Hauptziffergruppen. Um stattdessen alle drei Gruppen auf einer ebenen Grundlinie zu zeichnen, übergeben Sie ein "options"-Dict mit "first_digit_y_offset" auf "0" gesetzt: Der Wert ist der Abstand zwischen der ersten Ziffer und den übrigen, ausgedrückt als Bruchteil der Bildhöhe. "0.1" (die Vorgabe) bewahrt das klassische Aussehen; "0" richtet alle drei Gruppen aus. Neu in Version 0.11: Das "options"-Dict und der Schlüssel "first_digit_y_offset". Siehe auch: Barcodes drucken für Hinweise zur Wahl von "bar_width" bei gedruckter Ausgabe. encoder = EAN13Encoder( "5050070007664", options={"first_digit_y_offset": 0} ) encoder.save("ean13-level.png", bar_width=4) [Bild: EAN-13-Barcode, der "5050070007664" mit ebener Beschriftungsgrundlinie codiert.][Bild] 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). EAN13Encoder("5050070007664").save_svg("ean13.svg") [Bild: SVG-EAN-13-Barcode, der "5050070007664" codiert.][Bild] Die "viewBox" des SVG ist in Moduleinheiten angegeben, während "width" und "height" mit "bar_width" skalieren. Die von GS1 geforderten Ruhezonen von 11 Modulen links und 7 Modulen rechts werden automatisch angewendet. Schutzstriche ragen 5 Module unter die Grundlinie der Datenstriche hinaus, ebenfalls gemäß den GS1 General Specifications. 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. EAN13Encoder("5050070007664").save("ean13.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). EAN13Encoder("5050070007664").save_eps("ean13.eps") Das Argument "bar_width" ist die Breite des schmalsten Strichs in PostScript-Punkten (1 Punkt = 1/72 Zoll). Die GS1-Ruhezonen (11 Module links, 7 Module rechts) und der 5-Modul-Versatz der Schutzstriche werden automatisch angewendet. Neu in Version 0.12. API === class EAN13Encoder(code: str, options: EAN13RenderOptions | None = None) Bases: "Bar1DEncoder" Codiert einen 12- oder 13-stelligen Code als EAN-13-1D-Barcode. Die Prüfziffer wird für Sie berechnet. Wird ein 13-stelliger Code übergeben, wird dessen letzte Ziffer verworfen und neu berechnet. Typische Verwendung: encoder = EAN13Encoder("012345678901") encoder.save("ean13.png") Variablen: * **code** -- Die 12-stellige Eingabe (Nummernsystem + Hersteller + Produkt). * **check_digit** -- Die berechnete Mod-10-Prüfziffer. * **full_code** -- Der 13-stellige Code einschließlich Prüfziffer. * **left_bars** -- Strichmuster für die linke Hälfte des Symbols. * **right_bars** -- Strichmuster für die rechte Hälfte. * **options** -- Options-Dict zur Renderzeit (leer, wenn keine angegeben wurden). * **width** -- Pixelbreite des zuletzt gerenderten Bildes. * **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: str Neu in Version 0.12. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefü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: bytes Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefü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: PIL.Image.Image Neu in Version 0.11. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefü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: str Neu in Version 0.12. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefü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: str Neu in Version 0.15. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefü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_hex" und "light_hex" hinzugefü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_hex" und "light_hex" hinzugefü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_hex" und "light_hex" hinzugefü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: str Neu in Version 0.15. Geändert in Version 0.16: "dark_hex" und "light_hex" hinzugefügt. encode() -> tuple[str, str] Codiert die Barcode-Nummer und gibt die linke und rechte Datenzeichenkette zurück get_parity() -> tuple[int, int, int, int, int, int] Gibt die für diesen Code geltenden Paritätszuordnungen zurück calculate_check_digit() -> int Berechnet die EAN-13-Mod-10-Prüfziffer für "code". Von rechts nach links über die 12-stellige Eingabe werden ungeradzahlig positionierte Ziffern mit 3 und geradzahlig positionierte Ziffern mit 1 gewichtet; die Prüfziffer ist der Wert, der die gewichtete Summe auf ein Vielfaches von 10 bringt. init_renderer() -> EAN13Renderer Konstruiert einen "EAN13Renderer" für den codierten Code. Rückgabetyp: "EAN13Renderer" class EAN13RenderOptions Bases: "TypedDict" Optionale Anpassungen zur Renderzeit für EAN-13-Barcodes. Das Beschriftungslayout bei EAN-13 ist durch den Standard festgelegt, daher ist dies ein kleiner Satz kosmetischer Schalter. Alle Schlüssel sind optional; ausgelassene Schlüssel greifen auf die Bibliotheksvorgaben zurück. Neu in Version 0.11. height: int Gesamte Bildhöhe in Pixeln (= Benutzereinheiten für SVG/EPS bei Standard-DPI). Vorgabe ist die halbe Pixelbreite des Symbols. Neu in Version 0.12. first_digit_y_offset: float Wie weit über dem übrigen Text die erste Ziffer sitzt, als Bruchteil der Bildhöhe. Vorgabe "0.1" (das althergebrachte pyStrich-Aussehen, bei dem die führende Ziffer des Nummernsystems etwas höher sitzt als die beiden Hauptziffergruppen). Auf "0" setzen für eine ebene Grundlinie über alle drei Gruppen.