רינדור ברקוד
הצגת ברקוד
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,
))| מאפיין | סוג | תיאור |
|---|---|---|
scale | float | מקדם קנה מידה אחיד לכל הברקוד |
dpi | int | רזולוציה לפלט PNG (אין לה השפעה על SVG) |
module_width | float | רוחב של מודול ברקוד אחד ביחידות משתמש |
module_height | float | גובה של מודול ברקוד אחד ביחידות משתמש |
quiet_zone | float | ריפוד רווח לבן סביב הברקוד |
foreground_color | str | צבע הקס למוטות ולמודולים (למשל, "#000000") |
background_color | str | צבע הקס לרקע |
transparent_background | bool | רקע שקוף לפלט PNG |
show_text | bool | הצג טקסט קריא לבני אדם מתחת לברקוד |
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 מגדירה את הממשק לכל הרנדררים:
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 | `str | bytes` |
media_type | str | סוג MIME ("image/svg+xml" או "image/png") |
backend | str | מזהה רנדרר |
פריסת טקסט
לכל סימבולוגיה יש 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 |