Barcode-Darstellung

Barcode-Darstellung

Aspose.BarCode FOSS für Python trennt die Kodierung von der Darstellung. Nachdem ein Barcode in ein EncodedSymbol kodiert wurde, konvertiert eine Renderer-Implementierung die Modulmatrix in eine visuelle Ausgabe. Die Bibliothek enthält SvgRenderer und PngRenderer.


RenderOptions

RenderOptions steuert die visuelle Ausgabe aller Renderer. Übergebe es an to_svg() oder to_png() auf jedem Barcode-Objekt:

import aspose_barcode_foss as barcode
from aspose_barcode_foss import RenderOptions

bc = barcode.code128("Hello World")
svg = bc.to_svg(options=RenderOptions(
    scale=2.0,
    foreground_color="#003366",
    quiet_zone=10.0,
    show_text=True,
))
EigenschaftTypBeschreibung
scalefloatEinheitlicher Skalierungsfaktor für den gesamten Barcode
dpiintAuflösung für PNG-Ausgabe (hat keine Auswirkung auf SVG)
module_widthfloatBreite eines Barcode-Moduls in Benutzereinheiten
module_heightfloatHöhe eines Barcode-Moduls in Benutzereinheiten
quiet_zonefloatLeerzeichen-Padding um den Barcode
foreground_colorstrHex-Farbe für Balken und Module (z.B. "#000000")
background_colorstrHex-Farbe für den Hintergrund
transparent_backgroundboolTransparenter Hintergrund für PNG-Ausgabe
show_textboolZeige menschenlesbaren Text unter dem Barcode
font_familystrSchriftart für menschenlesbaren Text
font_sizefloatSchriftgröße für menschenlesbaren Text

ResolvedRenderOptions

ResolvedRenderOptions ist die vollständig zusammengeführte Konfiguration, die von OptionsResolver.resolve() erzeugt wird. Sie kombiniert vom Benutzer bereitgestellte RenderOptions mit den SymbologyProfile-Standardwerten. Alle Eigenschaften haben konkrete Werte (keine None).

Die Barcode.default_render_options-Eigenschaft enthält das bei der Generierung übergebene RenderOptions (oder None, falls nicht angegeben).


SVG-Ausgabe

SvgRenderer erzeugt SVG-Ausgabe. Rufen Sie to_svg() auf einem Barcode-Objekt auf:

bc = barcode.ean13("590123412345")
svg_string = bc.to_svg()

# With custom options
svg_custom = bc.to_svg(options=RenderOptions(
    scale=3.0,
    foreground_color="#1a1a1a",
    show_text=True,
    font_family="Helvetica",
    font_size=12.0,
))

with open("ean13.svg", "w") as f:
    f.write(svg_custom)

to_svg() gibt ein str zurück, das das vollständige SVG-Dokument enthält.


PNG-Ausgabe

PngRenderer erzeugt PNG-Ausgabe. Rufen Sie to_png() auf einem Barcode-Objekt auf:

bc = barcode.qr("https://example.com")
png_bytes = bc.to_png()

# With custom options
png_custom = bc.to_png(options=RenderOptions(
    scale=4.0,
    dpi=300,
    transparent_background=True,
))

with open("qr.png", "wb") as f:
    f.write(png_custom)

to_png() gibt bytes zurück, das die PNG-Bilddaten enthält.


Renderer-Abstraktion

Die abstrakte Basisklasse Renderer definiert die Schnittstelle für alle Renderer:

class Renderer(ABC):
    def render(self, symbol, layout, options) -> RenderedArtifact: ...

SvgRenderer und PngRenderer implementieren beide dieses Interface. Sie können Barcode.render(renderer, options) aufrufen, um einen spezifischen Renderer direkt zu verwenden:

from aspose_barcode_foss import SvgRenderer, RenderOptions

bc = barcode.code128("DATA")
artifact = bc.render(SvgRenderer(), RenderOptions(scale=2.0))
print(artifact.media_type)  # "image/svg+xml"
print(type(artifact.data))  # <class 'str'>

RenderedArtifact

Das RenderedArtifact, das von Renderer.render() zurückgegeben wird, enthält:

EigenschaftTypBeschreibung
data`strbytes`
media_typestrMIME-Typ ("image/svg+xml" oder "image/png")
backendstrRenderer-Identifikator

Textlayout

Jede Symbologie hat ein TextLayoutPolicy, das bestimmt, wie der menschenlesbare Text unter dem Strichcode positioniert wird. Die create_layout(symbol, options)-Methode gibt ein TextLayout zurück, das TextSegment-Objekte mit Positions- und Textdaten enthält.

QR Code verwendet QrTextLayoutPolicy, das ein No-Op-Layout bereitstellt (QR-Codes zeigen keinen menschenlesbaren Text an).


Tipps und bewährte Verfahren

  • Verwenden Sie scale für einheitliche Größen und module_width/module_height für präzise Dimensionskontrolle — kombinieren Sie beides nicht.
  • Legen Sie dpi=300 für PNG-Ausgabe in Druckqualität fest; die Vorgabe ist die Bildschirmauflösung.
  • Verwenden Sie transparent_background=True für PNG-Barcodes, die auf farbigen Hintergründen überlagert werden.
  • foreground_color und background_color akzeptieren standardmäßige Hex-Farbstrings ("#RRGGBB").
  • SVG-Ausgabe ist auflösungsunabhängig — bevorzugen Sie SVG für Web- und PDF-Einbettungen.

Häufige Probleme

ProblemUrsacheLösung
PNG erscheint zu kleinStandardmaßstab ist 1.0Erhöhe scale oder setze dpi
Text nicht sichtbarshow_text ist standardmäßig FalseSetze show_text=True
QR code hat keinen TextQR Symbologie unterstützt keinen menschenlesbaren TextErwartetes Verhalten — QR verwendet ein No-Op-Textlayout
Farben nicht angewendetEigenschaftsname falsch geschriebenVerwenden Sie genaue Eigenschaftsnamen: foreground_color, background_color

Siehe auch

 Deutsch