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,
))| Eigenschaft | Typ | Beschreibung |
|---|---|---|
scale | float | Einheitlicher Skalierungsfaktor für den gesamten Barcode |
dpi | int | Auflösung für PNG-Ausgabe (hat keine Auswirkung auf SVG) |
module_width | float | Breite eines Barcode-Moduls in Benutzereinheiten |
module_height | float | Höhe eines Barcode-Moduls in Benutzereinheiten |
quiet_zone | float | Leerzeichen-Padding um den Barcode |
foreground_color | str | Hex-Farbe für Balken und Module (z.B. "#000000") |
background_color | str | Hex-Farbe für den Hintergrund |
transparent_background | bool | Transparenter Hintergrund für PNG-Ausgabe |
show_text | bool | Zeige menschenlesbaren Text unter dem Barcode |
font_family | str | Schriftart für menschenlesbaren Text |
font_size | float | Schriftgröß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:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
data | `str | bytes` |
media_type | str | MIME-Typ ("image/svg+xml" oder "image/png") |
backend | str | Renderer-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
scalefür einheitliche Größen undmodule_width/module_heightfür präzise Dimensionskontrolle — kombinieren Sie beides nicht. - Legen Sie
dpi=300für PNG-Ausgabe in Druckqualität fest; die Vorgabe ist die Bildschirmauflösung. - Verwenden Sie
transparent_background=Truefür PNG-Barcodes, die auf farbigen Hintergründen überlagert werden. foreground_colorundbackground_colorakzeptieren standardmäßige Hex-Farbstrings ("#RRGGBB").- SVG-Ausgabe ist auflösungsunabhängig — bevorzugen Sie SVG für Web- und PDF-Einbettungen.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| PNG erscheint zu klein | Standardmaßstab ist 1.0 | Erhöhe scale oder setze dpi |
| Text nicht sichtbar | show_text ist standardmäßig False | Setze show_text=True |
| QR code hat keinen Text | QR Symbologie unterstützt keinen menschenlesbaren Text | Erwartetes Verhalten — QR verwendet ein No-Op-Textlayout |
| Farben nicht angewendet | Eigenschaftsname falsch geschrieben | Verwenden Sie genaue Eigenschaftsnamen: foreground_color, background_color |