عرض الباركود
عرض الباركود
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 تُعرّف الواجهة لجميع المُعرضين:
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 غير معتمد على الدقة — يُفضَّل SVG للويب وإدراج PDF.
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
| تظهر PNG صغيرة جدًا | المقياس الافتراضي هو 1.0 | زيادة scale أو تعيين dpi |
| النص غير مرئي | show_text يُعَدّ افتراضيًا إلى False | تعيين show_text=True |
| QR code لا يحتوي على نص | QR الرمزية لا تدعم النص القابل للقراءة من قبل الإنسان | السلوك المتوقع — QR يستخدم تخطيط نص لا يُنفّذ أي عملية |
| الألوان لم تُطبق | اسم الخاصية مكتوب بشكل خاطئ | استخدم أسماء الخصائص الدقيقة: foreground_color، background_color |