Redare cod de bare
Redare coduri de bare
Aspose.BarCode FOSS pentru Python separă codificarea de redare. După ce un cod de bare este codificat într-un EncodedSymbol, o implementare Renderer convertește matricea de module în ieșire vizuală. Biblioteca include SvgRenderer și PngRenderer.
RenderOptions
RenderOptions controlează ieșirea vizuală a tuturor redatoarelor. Transmite-l către to_svg() sau to_png() pe orice obiect Barcode:
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,
))| Proprietate | Tip | Descriere: |
|---|---|---|
scale | float | Multiplicator de scară uniform pentru întregul cod de bare |
dpi | int | Rezoluție pentru ieșirea PNG (nu are efect asupra SVG) |
module_width | float | Lățimea unui modul de cod de bare în unități de utilizator |
module_height | float | Înălțimea unui modul de cod de bare în unități de utilizator |
quiet_zone | float | Spațiu alb de umplere în jurul codului de bare |
foreground_color | str | Culoare hex pentru bare și module (de exemplu, "#000000") |
background_color | str | Culoare hex pentru fundal |
transparent_background | bool | Fundal transparent pentru ieșire PNG |
show_text | bool | Afișați textul lizibil sub codul de bare |
font_family | str | Font pentru textul lizibil |
font_size | float | Mărimea fontului pentru textul ușor de citit |
ResolvedRenderOptions
ResolvedRenderOptions este configurația complet îmbinată produsă de OptionsResolver.resolve(). Combină RenderOptions furnizate de utilizator cu valorile implicite SymbologyProfile. Toate proprietățile au valori concrete (fără None).
Proprietatea Barcode.default_render_options conține RenderOptions transmisă la momentul generării (sau None dacă nu este furnizată).
Ieșire SVG
SvgRenderer produce ieșire SVG. Apelă to_svg() pe un obiect Barcode:
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() returnează un str care conține documentul SVG complet.
Ieșire PNG
PngRenderer produce ieșire PNG. Apelă to_png() pe un obiect Barcode:
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() returnează bytes care conține datele imaginii PNG.
Abstracție a Renderer-ului
Clasa de bază abstractă Renderer definește interfața pentru toți rendererii:
class Renderer(ABC):
def render(self, symbol, layout, options) -> RenderedArtifact: ...SvgRenderer și PngRenderer implementează ambele această interfață. Poți apela Barcode.render(renderer, options) pentru a utiliza direct un renderer specific:
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
Obiectul RenderedArtifact returnat de Renderer.render() conține:
| Proprietate | Tip | Descriere: |
|---|---|---|
data | `str | bytes` |
media_type | str | Tip MIME ("image/svg+xml" sau "image/png") |
backend | str | Identificator renderer |
Aspect text
Fiecare simbologie are un TextLayoutPolicy care determină modul în care textul lizibil pentru om este poziționat sub codul de bare. Metoda create_layout(symbol, options) returnează un TextLayout care conține obiecte TextSegment cu date de poziție și text.
QR Code folosește QrTextLayoutPolicy, care oferă un layout fără efect (QR codurile nu afișează text lizibil pentru om).
Sfaturi și cele mai bune practici
- Folosește
scalepentru dimensionare uniformă șimodule_width/module_heightpentru control precis al dimensiunilor — nu combina ambele. - Setați
dpi=300pentru ieșire PNG de calitate tipărit; implicit este rezoluția ecranului. - Utilizați
transparent_background=Truepentru coduri de bare PNG care vor fi suprapuse pe fundaluri colorate. foreground_colorșibackground_coloracceptă șiruri de culori hex standard ("#RRGGBB").- Ieșirea SVG este independentă de rezoluție — preferați SVG pentru web și încorporarea în PDF.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
| PNG apare prea mic | Scara implicită este 1.0 | Măriți scale sau setați dpi |
| Textul nu este vizibil | show_text are ca valoare implicită False | Setați show_text=True |
| QR code nu are text | QR simbolistica nu suportă text lizibil de către om | Comportament așteptat — QR folosește un layout de text fără efect |
| Culorile nu sunt aplicate | Numele proprietății scris greșit | Utilizați numele exacte ale proprietăților: foreground_color, background_color |