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")
EAN-13-Barcode, der "5050070007664" codiert.

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)
EAN-13-Barcode, der "5050070007664" mit ebener Beschriftungsgrundlinie codiert.

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")
SVG-EAN-13-Barcode, der "5050070007664" codiert.

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)[Quellcode]

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][Quellcode]

Codiert die Barcode-Nummer und gibt die linke und rechte Datenzeichenkette zurück

get_parity() tuple[int, int, int, int, int, int][Quellcode]

Gibt die für diesen Code geltenden Paritätszuordnungen zurück

calculate_check_digit() int[Quellcode]

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[Quellcode]

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.