Απόδοση γραμμωτού κώδικα
Απόδοση Barcode
Aspose.BarCode FOSS για Python διαχωρίζει την κωδικοποίηση από την απόδοση. Αφού ένας barcode κωδικοποιηθεί σε ένα EncodedSymbol, μια υλοποίηση Renderer μετατρέπει τη μήτρα μονάδας σε οπική έξοδο. Η βιβλιοθήκη περιλαμβάνει SvgRenderer και PngRenderer.
RenderOptions
RenderOptions ελέγχει την οπτική έξοδο όλων των αποδοτών. Περάστε το στο to_svg() ή στο to_png() σε οποιοδήποτε αντικείμενο 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,
))| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
scale | float | Ομοιόμορφος πολλαπλασιαστής κλίμακας για ολόκληρο το barcode |
dpi | int | Ανάλυση για έξοδο PNG (δεν έχει επίδραση στο SVG) |
module_width | float | Πλάτος μιας μονάδας barcode σε μονάδες χρήστη |
module_height | float | Ύψος μιας μονάδας barcode σε μονάδες χρήστη |
quiet_zone | float | Περιθώριο λευκού χώρου γύρω από το barcode |
foreground_color | str | Hex χρώμα για μπαρ και μονάδες (π.χ., "#000000") |
background_color | str | Hex χρώμα φόντου |
transparent_background | bool | Διαφανές φόντο για έξοδο PNG |
show_text | bool | Εμφάνιση κειμένου που μπορεί να διαβαστεί από άνθρωπο κάτω από το barcode |
font_family | str | Γραμματοσειρά για κείμενο που διαβάζεται από άνθρωπο |
font_size | float | Μέγεθος γραμματοσειράς για κείμενο αναγνώσιμο από άνθρωπο |
ResolvedRenderOptions
ResolvedRenderOptions είναι η πλήρως συγχωνευμένη διαμόρφωση που παράγεται από το OptionsResolver.resolve(). Συνδυάζει τα RenderOptions που παρέχονται από τον χρήστη με τις προεπιλογές του SymbologyProfile. Όλες οι ιδιότητες έχουν συγκεκριμένες τιμές (χωρίς None).
Η ιδιότητα Barcode.default_render_options κρατά το RenderOptions που παρασχέθηκε κατά τη δημιουργία (ή το None εάν δεν παρασχέθηκε).
Έξοδος SVG
SvgRenderer παράγει έξοδο SVG. Καλέστε το to_svg() σε ένα αντικείμενο 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() επιστρέφει ένα str που περιέχει το πλήρες έγγραφο SVG.
Έξοδος PNG
PngRenderer παράγει έξοδο PNG. Καλέστε το to_png() σε ένα αντικείμενο 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() επιστρέφει bytes που περιέχει τα δεδομένα εικόνας PNG.
Αφαίρεση Renderer
Η αφηρημένη βασική κλάση Renderer ορίζει τη διεπαφή για όλους τους renderers:
class Renderer(ABC):
def render(self, symbol, layout, options) -> RenderedArtifact: ...SvgRenderer και PngRenderer και οι δύο υλοποιούν αυτό το interface. Μπορείτε να καλέσετε το Barcode.render(renderer, options) για να χρησιμοποιήσετε έναν συγκεκριμένο renderer απευθείας:
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
Το RenderedArtifact που επιστρέφεται από το Renderer.render() περιέχει:
| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
data | `str | bytes` |
media_type | str | Τύπος MIME ("image/svg+xml" ή "image/png") |
backend | str | Αναγνωριστικό του renderer |
Διάταξη Κειμένου
Κάθε συμβολογία έχει ένα TextLayoutPolicy που καθορίζει πώς το κείμενο που μπορεί να διαβαστεί από άνθρωπο τοποθετείται κάτω από το barcode. Η μέθοδος create_layout(symbol, options) επιστρέφει ένα TextLayout που περιέχει αντικείμενα TextSegment με δεδομένα θέσης και κειμένου.
QR Code χρησιμοποιεί το QrTextLayoutPolicy, το οποίο παρέχει μια διάταξη χωρίς ενέργεια (QR κωδικοί δεν εμφανίζουν κείμενο που μπορεί να διαβαστεί από άνθρωπο).
Συμβουλές και Καλές Πρακτικές
- Χρησιμοποιήστε το
scaleγια ομοιόμορφο μέγεθος και τοmodule_width/module_heightγια ακριβή έλεγχο διαστάσεων — μην συνδυάσετε και τα δύο. - Ορίστε το
dpi=300για εξαγωγή PNG υψηλής ποιότητας εκτύπωσης· η προεπιλογή είναι η ανάλυση οθόνης. - Χρησιμοποιήστε το
transparent_background=Trueγια κωδικούς QR PNG που θα επικάθονται πάνω σε χρωματιστά υπόβαθρα. foreground_colorκαιbackground_colorαποδέχονται τυπικές δεκαεξαδικές συμβολοσειρές χρώματος ("#RRGGBB").- Η έξοδος SVG είναι ανεξάρτητη από την ανάλυση — προτιμήστε το SVG για ενσωμάτωση στο web και σε PDF.
Συνηθισμένα προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Το PNG φαίνεται πολύ μικρό | Η προεπιλεγμένη κλίμακα είναι 1.0 | Αυξήστε το scale ή ορίστε το dpi |
| Το κείμενο δεν είναι ορατό | Το show_text είναι προεπιλεγμένο σε False | Set show_text=True |
| QR code δεν έχει κείμενο | Η συμβολική αναπαράσταση του QR δεν υποστηρίζει κείμενο αναγνώσιμο από άνθρωπο | Αναμενόμενη συμπεριφορά — QR χρησιμοποιεί διάταξη κειμένου no-op |
| Τα χρώματα δεν εφαρμόζονται | Λανθασμένο όνομα ιδιότητας | Χρησιμοποιήστε ακριβή ονόματα ιδιοτήτων: foreground_color, background_color |