Rendu de code-barres
Rendu de code-barres
Aspose.BarCode FOSS pour Python sépare l’encodage du rendu. Après qu’un code-barres soit encodé dans un EncodedSymbol, une implémentation Renderer convertit la matrice de modules en sortie visuelle. La bibliothèque inclut SvgRenderer et PngRenderer.
RenderOptions
RenderOptions contrôle la sortie visuelle de tous les rendus. Passez-le à to_svg() ou to_png() sur tout objet 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,
))| Propriété | Type | Description |
|---|---|---|
scale | float | Multiplicateur d’échelle uniforme pour l’ensemble du code-barres |
dpi | int | Résolution pour la sortie PNG (n’a aucun effet sur le SVG) |
module_width | float | Largeur d’un module de code-barres en unités utilisateur |
module_height | float | Hauteur d’un module de code-barres en unités utilisateur |
quiet_zone | float | Marge d’espace blanc autour du code-barres |
foreground_color | str | Couleur hexadécimale pour les barres et les modules (par ex., "#000000") |
background_color | str | Couleur hexadécimale pour l’arrière-plan |
transparent_background | bool | Arrière-plan transparent pour la sortie PNG |
show_text | bool | Afficher le texte lisible sous le code-barres |
font_family | str | Police du texte lisible |
font_size | float | Taille de police pour le texte lisible par l’homme |
ResolvedRenderOptions
ResolvedRenderOptions est la configuration entièrement fusionnée produite par OptionsResolver.resolve(). Elle combine les RenderOptions fournis par l’utilisateur avec les valeurs par défaut de SymbologyProfile. Toutes les propriétés ont des valeurs concrètes (pas de None).
La propriété Barcode.default_render_options contient le RenderOptions passé au moment de la génération (ou le None s’il n’est pas fourni).
Sortie SVG
SvgRenderer produit une sortie SVG. Appelez to_svg() sur un objet 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() renvoie un str contenant le document SVG complet.
Sortie PNG
PngRenderer produit une sortie PNG. Appelez to_png() sur un objet 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() renvoie bytes contenant les données d’image PNG.
Abstraction du rendu
La classe de base abstraite Renderer définit l’interface pour tous les renderers:
class Renderer(ABC):
def render(self, symbol, layout, options) -> RenderedArtifact: ...SvgRenderer et PngRenderer implémentent tous les deux cette interface. Vous pouvez appeler Barcode.render(renderer, options) pour utiliser directement un rendu spécifique:
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
Le RenderedArtifact renvoyé par Renderer.render() contient:
| Propriété | Type | Description |
|---|---|---|
data | `str | bytes` |
media_type | str | Type MIME ("image/svg+xml" ou "image/png") |
backend | str | Identifiant du rendu |
Mise en page du texte
Chaque symbologie possède un TextLayoutPolicy qui détermine la façon dont le texte lisible par l’homme est positionné sous le code-barres. La méthode create_layout(symbol, options) renvoie un TextLayout contenant des objets TextSegment avec les données de position et de texte.
QR Code utilise QrTextLayoutPolicy, qui fournit une mise en page neutre (les codes QR n’affichent pas de texte lisible).
Conseils et bonnes pratiques
- Utilisez
scalepour une taille uniforme etmodule_width/module_heightpour un contrôle précis des dimensions — ne combinez pas les deux. - Définir
dpi=300pour la sortie PNG de qualité impression ; la valeur par défaut est la résolution écran. - Utilisez
transparent_background=Truepour les codes-barres PNG qui seront superposés sur des arrière-plans colorés. foreground_coloretbackground_coloracceptent les chaînes de couleur hex standard ("#RRGGBB").- La sortie SVG est indépendante de la résolution — privilégiez le SVG pour l’intégration web et PDF.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| Le PNG apparaît trop petit | L’échelle par défaut est 1.0 | Augmentez scale ou définissez dpi |
| Texte non visible | show_text a pour valeur par défaut False | Définir show_text=True |
| QR code n’a pas de texte | La symbologie de QR ne prend pas en charge le texte lisible par l’homme | Comportement attendu — QR utilise une mise en page de texte sans opération |
| Couleurs non appliquées | Nom de propriété mal orthographié | Utilisez les noms de propriétés exacts : foreground_color, background_color |