رندر بارکد
رندر بارکد
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 | کد Hex رنگ پسزمینه |
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 رابط (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 | `str | bytes` |
media_type | str | نوع MIME ("image/svg+xml" یا "image/png") |
backend | str | شناسهٔ رندر |
چیدمان متن
هر نمادگذاری یک 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 |