רינדור ברקוד

הצגת ברקוד

Aspose.BarCode FOSS עבור Python מפריד קידוד מהצגה. לאחר שהברקוד מקודד ל-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,
))
מאפייןסוגתיאור
scalefloatמקדם קנה מידה אחיד לכל הברקוד
dpiintרזולוציה לפלט PNG (אין לה השפעה על SVG)
module_widthfloatרוחב של מודול ברקוד אחד ביחידות משתמש
module_heightfloatגובה של מודול ברקוד אחד ביחידות משתמש
quiet_zonefloatריפוד רווח לבן סביב הברקוד
foreground_colorstrצבע הקס למוטות ולמודולים (למשל, "#000000")
background_colorstrצבע הקס לרקע
transparent_backgroundboolרקע שקוף לפלט PNG
show_textboolהצג טקסט קריא לבני אדם מתחת לברקוד
font_familystrגופן לטקסט קריא
font_sizefloatגודל גופן לטקסט קריא לבני אדם

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 מגדירה את הממשק לכל הרנדררים:

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

SvgRenderer ו-PngRenderer שניהם מממשים את הממשק הזה. ניתן לקרוא ל-Barcode.render(renderer, options) כדי להשתמש במעבד ספציפי ישירות:

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`strbytes`
media_typestrסוג MIME ("image/svg+xml" או "image/png")
backendstrמזהה רנדרר

פריסת טקסט

לכל סימבולוגיה יש TextLayoutPolicy שמחליט כיצד הטקסט הקריא למין האנוש ממוקם מתחת לברקוד. השיטה create_layout(symbol, options) מחזירה TextLayout המכילה עצמים מסוג TextSegment עם מידע על מיקום וטקסט.

QR Code משתמש ב-QrTextLayoutPolicy, שמספק פריסת no-op (קודי QR אינם מציגים טקסט קריא למין האנוש).


טיפים ושיטות מומלצות

  • השתמש ב-scale לגודל אחיד ו-module_width/module_height לשליטה מדויקת במימדים — אל תשלב את שניהם.
  • הגדר dpi=300 עבור יצוא PNG באיכות הדפסה; ברירת המחדל היא רזולוציית מסך.
  • השתמש ב-transparent_background=True עבור ברקוד PNG שישולב על רקעים צבעוניים.
  • foreground_color ו-background_color מקבלים מחרוזות צבע הקסדצימל סטנדרטיות ("#RRGGBB").
  • פלט SVG הוא בלתי תלוי ברזולוציה — העדף SVG עבור אינטגרציה באינטרנט וב-PDF.

בעיות נפוצות

בעיהסיבהתיקון
קובץ PNG נראה קטן מדיקנה מידה ברירת המחדל הוא 1.0הגדל את scale או הגדר את dpi
הטקסט אינו נראהshow_text מוגדר כברירת מחדל לFalseהגדר show_text=True
QR code אין טקסטהסימבולוגיה של QR אינה תומכת בטקסט קריא לאדםהתנהגות צפויה — QR משתמש ב-פריסת טקסט ללא פעולה
הצבעים לא הוחלושם המאפיין מאוית באופן שגויהשתמש בשמות המאפיינים המדויקים: foreground_color, background_color

ראה גם

 עברית