رندر بارکد

رندر بارکد

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کد Hex رنگ پس‌زمینه
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 رابط (interface) را برای تمام رندررها تعریف می‌کند:

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 استفاده می‌کند، که یک چیدمان بدون عملیات فراهم می‌کند (کدهای QR متن قابل خواندن برای انسان را نمایش نمی‌دهند).


نکات و بهترین روش‌ها

  • از scale برای اندازه‌گیری یکنواخت استفاده کنید و برای کنترل دقیق ابعاد از module_width/module_height — هر دو را ترکیب نکنید.
  • مقدار dpi=300 را برای خروجی PNG با کیفیت چاپ تنظیم کنید؛ مقدار پیش‌فرض وضوح صفحه نمایش است.
  • از transparent_background=True برای بارکدهای PNG که روی پس‌زمینه‌های رنگی قرار می‌گیرند استفاده کنید.
  • foreground_color و background_color رشته‌های رنگ هگز استاندارد ("#RRGGBB") را می‌پذیرند.
  • خروجی SVG مستقل از وضوح است — برای وب و جاسازی در PDF ترجیحاً از SVG استفاده کنید.

مشکلات رایج

مشکلعلتراه‌حل
PNG به نظر می‌رسد خیلی کوچک استمقیاس پیش‌فرض 1.0 استمقدار scale را افزایش دهید یا dpi را تنظیم کنید
متن قابل مشاهده نیستshow_text به‌صورت پیش‌فرض False استSet show_text=True
QR code متنی نداردنمادگذاری QR از متن قابل‌خواندن برای انسان پشتیبانی نمی‌کندرفتار مورد انتظار — QR از چیدمان متنی بدون‌عمل استفاده می‌کند
رنگ‌ها اعمال نشده‌اندنام ویژگی به اشتباه نوشته شدهاز نام‌های دقیق ویژگی استفاده کنید: foreground_color, background_color

همچنین ببینید:

 فارسی