هر تولیدکننده QR به‌طور پیش‌فرض یک حالت رمزگذاری را برای شما انتخاب می‌کند و در اکثر موارد این پیش‌فرض کافی است. اما زمانی که نیاز به کنترل بر آن داشته باشید — یک شناسه عددی در کنار کد محصول، یک بلوک متن ژاپنی که نمی‌خواهید به‌صورت UTF‑8 ذخیره شود، یا داده‌ای که هر بار تولید می‌کنید باید همان بایت‌ها را داشته باشد — این پیش‌فرض دیگر کافی نیست. این راهنما نشان می‌دهد چگونه به‌صورت صریح تنظیم حالت‌های رمزگذاری QR در پایتون را انجام دهید، با استفاده از Aspose.BarCode for Python via .NET، به‌طوری که یک نماد QR می‌تواند یک بخش عددی، یک بخش حروف‑عدد، یک بخش بایتی و یک بخش کانجی داشته باشد — هر کدام در حالتی که بهترین تطبیق را دارد ذخیره شوند.

Aspose.BarCode این حالت‌های فشرده‌سازی را در نام‌های API خود (QrExtCompactionMode) می‌نامد و خود مشخصات QR آن‌ها را حالات رمزگذاری می‌نامد. آنها همان چهار حالت تحت دو نام هستند و این راهنما در تمام متن از “encoding mode” استفاده می‌کند چون این اصطلاح توسط مشخصات و اکثر کتابخانه‌های QR پایتون به کار می‌رود.

چرا حالت‌های رمزگذاری QR بر اندازه نماد و قابلیت اسکن تأثیر می‌گذارند

اندازه فیزیکی یک کد QR توسط تعداد بیت‌های مورد نیاز بار داده آن تعیین می‌شود و بیت‌ها به ازای هر کاراکتر کاملاً به حالت رمزگذاری استفاده‌شده برای آن بخش وابسته است. مشخصات چهار حالت داده را تعریف می‌کند که چگالی‌های به‌طرز قابل‌توجهی متفاوت دارند:

حالتمجموعه کاراکترهاحافظههزینه به ازای هر کاراکتر
عددیاعداد 0-9۳ رقم برای ۱۰ بیت۳.33 بیت
الفبایی عددیاعداد، حروف بزرگ A‑Z، فاصله، $%*+-./:۲ کاراکتر برای ۱۱ بیت5.5 بیت
بایتهر داده ۸ بیتی، معمولاً UTF‑8۱ بایت برای ۸ بیت۸ بیت
کانجیکاراکترهای دو بایتی Shift-JIS۱ کاراکتر برای ۱۳ بیت۱۳ بیت

یک شناسه 30 رقمی تقریباً 100 بیت در حالت عددی و 240 بیت در حالت بایتی هزینه دارد. این اختلاف اغلب به اندازه کافی است تا نماد را به چند نسخه QR بالاتر ببرد، و نسخه بالاتر به معنای ماژول‌های بیشتر در همان ناحیه چاپی است — ماژول‌های کوچکتر، و نرخ خواندن پایین‌تر در دوربین‌های با وضوح کم، بسته‌بندی‌های منحنی و برچسب‌های فرسوده.

انتخاب خودکار حالت برای اکثر بارهای داده به‌خوبی کار می‌کند. اما زمانی که شکل داده‌های خود را می‌دانید و تجزیه‌کننده آن را نمی‌داند، محدود می‌شود: یک دنباله طولانی عددی که توسط یک حرف واحد شکسته می‌شود، متن ژاپنی که حالت بایتی برای هر کاراکتر سه بایت UTF‑8 مصرف می‌کند، یا شناسه‌ای با قالب ثابت که می‌خواهید خروجی تعیین‌پذیر در نسخه‌های مختلف کتابخانه داشته باشید.

زمانی که تنظیم حالت به صورت دستی ارزش دارد

تغییر حالت رایگان نیست. هر مرز بخش یک نشانگر حالت چهار بیتی به‌همراه یک فیلد شمارش کاراکتر از هشت تا شانزده بیت بسته به نسخه QR می‌نویسد. تقسیم بیش از حد بار داده می‌تواند نماد بزرگتری نسبت به اجازه دادن به مولد برای تصمیم‌گیری تولید کند.

تنظیم حالت به‌صورت صریح زمانی سودمند است که:

  • بار مفید شامل توالی‌های طولانی و همگن است — یک سری عددی ۴۰ رقمی، یک پاراگراف کانجی.
  • شما در حال رمزگذاری متن ژاپنی هستید و می‌خواهید حالت کانجی با ۱۳ بیت برای هر کاراکتر به‌جای حالت بایت با ۲۴ بیت استفاده شود.
  • شما به خروجی قابل بازتولید و بایت‌یکسان برای تست‌های رگرسیون یا اعتبارسنجی چک‌سام نیاز دارید.

معمولاً افزودن پیچیدگی برای بارهای کوتاه، داده‌هایی که هر چند کاراکتر یک بار نوعشان تغییر می‌کند یا URLها، که تجزیه و تحلیل خودکار به خوبی آنها را مدیریت می‌کند، ارزش ندارد. بخش اندازه‌گیری زیر نشان می‌دهد چگونه می‌توانید بررسی کنید در کدام حالت هستید.

دو روش برای تنظیم حالت‌های رمزگذاری QR در پایتون

Aspose.BarCode دو مسیر برای همان نتیجهٔ کدگذاری‌شده ارائه می‌دهد و دانستن دلیل وجود هر دو قبل از نوشتن کد ارزشمند است.

QrExtCodetextBuilderانتخابگرهای EXTENDED درون‌خطی
حالت تنظیم شده توسطفراخوانی‌های متد با مقادیر enumنشانگرهای بک‌اسلش در رشته
خطاهای گرفته‌شدهدر محل فراخوانیفقط در زمان رمزگشایی
نگرانی‌های Escapeهیچ‌کدام\\ escaping, یا رشته‌های خام
بهترین برایکد برنامهمتن کد از پیکربندی، پایگاه داده یا سیستم دیگر

سازنده گزینه پیش‌فرض بهتری است. QrExtCompactionMode.NUMERIC یا وجود دارد یا بلافاصله یک AttributeError ایجاد می‌کند، در حالی که یک \numm اشتباه تایپ‌شده در یک رشته به‌صورت خاموش به دادهٔ بارگذاری تبدیل می‌شود و فقط زمانی که کسی برچسب را اسکن می‌کند، آشکار می‌شود. هر دو رویکرد از همان تنظیم ژنراتور QREncodeMode.EXTENDED استفاده می‌کنند، بنابراین می‌توانید بین آن‌ها جابه‌جا شوید بدون اینکه نیازی به تغییر چیزی در ادامهٔ کار باشد.

تنظیم حالت‌های رمزگذاری QR Code در پایتون: گام به گام

1. نصب و آماده‌سازی محیط توسعه

Aspose.BarCode for Python via .NET یک کتابخانهٔ چندپلتفرمی است که از تولید، تشخیص و دستکاری بیش از ۵۰ نمادگذاری، از جمله QR، پشتیبانی می‌کند. از PyPI نصب کنید:

pip install aspose-barcode-for-python-via-net

نسخه را تأیید کنید، زیرا این APIها به نسخه ۲۶.۶ یا جدیدتر نیاز دارند:

pip show aspose-barcode

سپس تأیید کنید که وارد کردن حل می‌شود. بسته به یک زمان اجرا .NET متصل می‌شود، بنابراین یک وارد کردن موفقیت‌آمیز بیشتر از حضور فایل‌ها بر روی دیسک به شما می‌گوید:

from aspose.barcode.generation import QREncodeMode, QrExtCompactionMode

print("Aspose.BarCode imported successfully.")
print("EXTENDED mode available:", hasattr(QREncodeMode, "EXTENDED"))
print("Encoding modes:", [m for m in dir(QrExtCompactionMode) if m.isupper()])

Output:

Aspose.BarCode imported successfully.
EXTENDED mode available: True
Encoding modes: ['ALPHA_NUMERIC', 'AUTO', 'BYTES', 'KANJI', 'NUMERIC']

اگر EXTENDED موجود نباشد، شما از نسخه‌ای قدیمی‌تر از 26.6 استفاده می‌کنید و باید قبل از ادامه ارتقا دهید.

اگر فایل مجوز دارید، آن را یک بار در زمان راه‌اندازی برنامه، قبل از هر فراخوانی تولید یا تشخیص اعمال کنید:

from aspose.barcode import License

license = License()
license.set_license("Aspose.BarCode.Python.NET.lic")

۲. تنظیم حالت رمزگذاری برای هر بخش با QrExtCodetextBuilder

QrExtCodetextBuilder یک فهرست مرتب از بخش‌ها را نگه می‌دارد. هر فراخوانی داده‌ها را همراه با حالت رمزگذاری که باید آن‌ها را ذخیره کند، اضافه می‌کند و get_extended_codetext() آن‌ها را به رشته فرمت‑گسترش‌یافته‌ای که ژنراتور می‌فهمد، ترکیب می‌سازد.

  1. کلاس‌های تولید را وارد کنید.
  2. یک QrExtCodetextBuilder ایجاد کنید.
  3. یک بخش عددی با QrExtCompactionMode.NUMERIC اضافه کنید.
  4. یک بخش حروف‑عدد با QrExtCompactionMode.ALPHA_NUMERIC اضافه کنید.
  5. یک بخش بایت با QrExtCompactionMode.BYTES اضافه کنید.
  6. یک بخش کانجی با QrExtCompactionMode.KANJI اضافه کنید.
  7. متن کد گسترده ترکیبی را بازیابی کنید.
from aspose.barcode.barcoderecognition import BarCodeReader, DecodeType
from aspose.barcode.generation import (
    BarcodeGenerator,
    EncodeTypes,
    QREncodeMode,
    QrExtCodetextBuilder,
    QrExtCompactionMode,
)

# Instantiate the Builder.
text_builder = QrExtCodetextBuilder()

# Numeric Segment — 3 Digits per 10 Bits.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.NUMERIC, "1234567"
)

# Alphanumeric Segment — Uppercase and Digits Only, 2 Characters per 11 Bits.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.ALPHA_NUMERIC, "ASPOSE2026"
)

# Byte Segment — Lowercase Forces Byte Mode, 8 Bits per Character.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.BYTES, "aspose2026"
)

# Kanji Segment — Shift-JIS Double-Byte Characters, 13 Bits Each.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.KANJI,
    "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A",
)

# Assemble the Final Extended Codetext.
codetext = text_builder.get_extended_codetext()
print("Extended codetext:", repr(codetext))

توضیح

  • هر فراخوانی از add_codetext_with_compaction_mode حالت رمزگذاری را برای یک بخش تنظیم می‌کند. ترتیب مهم است — رمزگشایر بخش‌ها را به ترتیب اضافه شده به هم می‌چسباند.
  • مجموعه الفبا‑عدد به‌طور عمدی محدود است: ارقام، حروف بزرگ A‑Z، فاصله، و $%*+-./:. به همین دلیل ASPOSE2026 با حالت الفبا‑عدد سازگار است اما aspose2026 نیست. حروف کوچک خارج از مجموعه هستند، بنابراین آن بخش باید از BYTES استفاده کند. ارسال حروف کوچک به ALPHA_NUMERIC رایج‌ترین اشتباه هنگام تنظیم حالت‌ها به این روش است.
  • بخش کانجی از \u3062 به بعد استفاده می‌کند، که در واقع هیراگانا هستند نه کانجی واقعی. حالت کانجی محدودهٔ دو بایتی Shift‑JIS را پوشش می‌دهد که شامل کانا نیز می‌شود، بنابراین اینها هر کدام با ۱۳ بیت رمزگذاری می‌شوند نه ۲۴ بیتی که حالت بایت در UTF‑8 برای هر کدام صرف می‌کرد.
  • get_extended_codetext() رشته‌ای را تولید می‌کند که ژنراتور در حالت EXTENDED آن را تجزیه می‌کند. چاپ آن با repr() یک بار ارزش دارد — این کار سینتکس انتخابگر را که سازنده صادر می‌کند نشان می‌دهد، که دقیقاً همان چیزی است که بخش بعدی به‌صورت دستی می‌نویسد.

3. تنظیم حالت رمزگذاری به صورت درون‌خطی، بدون استفاده از Builder

وقتی متن کد از خارج کد Python شما منبع می‌شود، می‌توانید حالت هر بخش را به‌صورت مستقیم با یک انتخابگر تنظیم کنید. هر علامت پیش‌وندی با بک‌اسلش، تمام کاراکترها را تا ظهور علامت بعدی کنترل می‌کند:

انتخابگرحالت را تنظیم می‌کند به
\numعدد
\alnumالفبایی عددی
\byteبایت، UTF-8
\kanjiکانجی، Shift-JIS
\autoانتخاب خودکار حالت
# Equivalent to the Builder Output Above, Written Directly.
codetext = (
    r"\num1234567"
    r"\alnumASPOSE2026"
    r"\byteaspose2026"
    "\\kanji\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A"
)

به فرار (escaping) توجه کنید. در یک رشتهٔ معمولی پایتون، "\num" یک انتخابگر نیست — بلکه یک خط جدید است که به دنبال آن um می‌آید. رشته‌های خام (r"...") این مشکل را برطرف می‌کنند، اما یک رشتهٔ خام همچنین \u escapeها را مسدود می‌کند، به همین دلیل خط کانجی بالا از یک رشتهٔ معمولی با \\kanji استفاده می‌کند. این تلهٔ فرار، استدلال عملی برای ترجیح سازنده در بخش ۲ است.

۴. تولید بارکد QR در حالت EXTENDED

تنظیم حالت‌های هر بخش تا زمانی که ژنراتور به آن‌ها بخواند، هیچ تأثیری ندارد. بدون QREncodeMode.EXTENDED، اطلاعات بخش نادیده گرفته می‌شود و نشانگرهای انتخاب‌کننده به‌عنوان متن بارگذاری واقعی کدگذاری می‌شوند.

  1. یک BarcodeGenerator را با EncodeTypes.QR و متن کد گسترده ایجاد کنید.
  2. encode_mode را به QREncodeMode.EXTENDED تنظیم کنید.
  3. وضوح را پیکربندی کنید و به‌صورت اختیاری سطح تصحیح خطا و حاشیه را تنظیم کنید.
  4. بارکد را به صورت PNG بدون افت کیفیت ذخیره کنید.
# Create the QR Generator with the Extended Codetext.
gen = BarcodeGenerator(EncodeTypes.QR, codetext)

# Switch to EXTENDED Mode So the Per-Segment Modes Are Respected.
gen.parameters.barcode.qr.encode_mode = QREncodeMode.EXTENDED

# Render at Print Resolution Rather Than Upscaling Later.
gen.parameters.resolution = 300

# Save the Generated QR Code.
gen.save("extended_qr.png")

print("QR code generated and saved as extended_qr.png")

توضیح

  • gen.parameters.barcode.qr.encode_mode = QREncodeMode.EXTENDED خطی است که تجزیه بخش‌ها را فعال می‌کند. اگر آن را حذف کنید، ژنراتور یک کد QR معتبر و قابل اسکن تولید می‌کند که متن صرف \num1234567... را شامل می‌شود — به همین دلیل بخش بعدی به جای فرض کردن، تأیید می‌کند.
  • gen.parameters.resolution = 300 با وضوح چاپ رندر می‌شود. نمادهایی که برای چاپگرهای برچسب یا آثار بسته‌بندی هدف‌گذاری شده‌اند باید در اندازه نهایی تولید شوند، نه پس از آن مقیاس‌بندی شوند، زیرا این کار لبه‌های ماژول را نرم می‌کند.
  • save یک PNG بدون افت کیفیت می‌نویسد. از JPEG برای هر نوع سمبولیسم دو‑بعدی خودداری کنید — artefacts فشرده‌سازی آن شبکه ماژول را که رمزگشاینده نمونه‌برداری می‌کند، تار می‌کند.

5. تأیید اعمال حالت رمزگذاری

تولید موفقیت‌آمیز هیچ چیزی درباره این که آیا حالت‌های هر‑بخش اعمال شده‌اند یا نه ثابت نمی‌کند. مرحلهٔ رمزگشایی همان چیزی است که یک نماد به‌درستی کدگذاری‌شده را از نمادی که نشانگرهای انتخاب‌کننده را به عنوان داده حمل می‌کند، جدا می‌کند.

  1. یک BarCodeReader را با مسیر فایل و DecodeType.QR مقداردهی اولیه کنید.
  2. نتایج را به‌صورت ملموس نمایش دهید تا خواندن ناموفق قابل مشاهده باشد.
  3. متن رمزگشایی‌شده را با ترکیب مورد انتظار مقایسه کنید.
EXPECTED = (
    "1234567"
    "ASPOSE2026"
    "aspose2026"
    "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A"
)

# Initialise the QR Code Reader.
reader = BarCodeReader("extended_qr.png", DecodeType.QR)
results = list(reader.read_bar_codes())

if not results:
    raise ValueError("No QR code was detected in extended_qr.png.")

for result in results:
    decoded = result.code_text
    print("BarCode CodeText:", decoded)

if "\\num" in decoded or "\\alnum" in decoded:
        print("Selectors were encoded literally — check that encode_mode is EXTENDED.")
    elif decoded == EXPECTED:
        print("Verified: all four segments decoded and concatenated as expected.")
    else:
        print("Mismatch. Expected:", EXPECTED)

توضیح

  • DecodeType.QR تشخیص را فقط به نمادهای QR محدود می‌کند، که نسبت به اسکن تمام نمادهای پشتیبانی‌شده سریع‌تر است و از رمزگشایی یک نماد خراب به عنوان چیز دیگری جلوگیری می‌کند.
  • list(...) حالت شکست را به‌صورت صریح نشان می‌دهد. یک شکست در تشخیص یک iterable خالی برمی‌گرداند به‌جای اینکه استثنا پرتاب کند، بنابراین یک حلقه for بدون محافظ بر روی خواندن ناموفق به‌صورت ساکت پایان می‌یابد و به‌عنوان موفقیت در نظر گرفته می‌شود.
  • بررسی وجود یک \num به‌صورت متنی، رایج‌ترین اشتباه در این جریان کاری را می‌گیرد: تنظیم صحیح بخش‌ها و فراموش کردن تنظیم encode_mode.
  • بارگشایی (payload) رمزگشایی‌شده، ترکیب بخش‌های خام است که تمام اطلاعات حالت در طول رمزگذاری مصرف شده‌اند. حالت‌های رمزگذاری دستورات برای رمزگذار هستند و بخشی از داده‌ها نیستند.

6. اندازه‌گیری اینکه آیا تنظیم حالت به‌صورت دستی مفید بود

تنظیم حالت رمزگذاری به صورت دستی یک بهینه‌سازی است، بنابراین به جای فرض کردن آن، آن را اندازه‌گیری کنید. همان بارگذاری را به هر دو روش تولید کنید و مقایسه کنید:

RAW = "1234567ASPOSE2026aspose2026"

# Automatic Mode Selection.
auto = BarcodeGenerator(EncodeTypes.QR, RAW)
auto.save("qr_auto.png")

# Manually Set Modes per Segment.
builder = QrExtCodetextBuilder()
builder.add_codetext_with_compaction_mode(QrExtCompactionMode.NUMERIC, "1234567")
builder.add_codetext_with_compaction_mode(QrExtCompactionMode.ALPHA_NUMERIC, "ASPOSE2026")
builder.add_codetext_with_compaction_mode(QrExtCompactionMode.BYTES, "aspose2026")

manual = BarcodeGenerator(EncodeTypes.QR, builder.get_extended_codetext())
manual.parameters.barcode.qr.encode_mode = QREncodeMode.EXTENDED
manual.save("qr_manual.png")

print("Compare qr_auto.png and qr_manual.png — count modules along one edge.")

ماژول‌ها را در طول یک لبه از هر تصویر شمارش کنید. نماد QR نسخه n برابر است با مربع 17 + 4n ماژول، بنابراین نسخه ۲ برابر ۲۵×۲۵ و نسخه ۳ برابر ۲۹×۲۹ است. اگر هر دو به همان نسخه برسند، تحلیل خودکار قبلاً تقسیم‌بندی بهینه را یافته است و تنظیم حالت به‌صورت دستی بار نگهداری بدون هیچ سودی بود. کشف این موضوع قبل از ارسال، نتیجه‌ای مفید است، نه گامی بی‌فایده.

دریافت یک مجوز رایگان

Aspose یک مجوز موقت رایگان ارائه می‌دهد که محدودیت‌های ارزیابی را برطرف می‌کند و تمام عملکردها را برای تست باز می‌کند. یک مجوز را از صفحه مجوز موقت Aspose درخواست کنید و قبل از هر فراخوانی تولید یا تشخیص آن را اعمال کنید.

منابع اضافی رایگان

نتیجه‌گیری

تنظیم حالت‌های رمزگذاری QR کد در Python به دو سؤال خلاصه می‌شود: کدام بخش چه حالت‌ایی دریافت می‌کند و چگونه به ژنراتور می‌گویید این انتخاب را رعایت کند. QrExtCodetextBuilder و QrExtCompactionMode به سؤال اول در کد برنامه پاسخ می‌دهند؛ QREncodeMode.EXTENDED به سؤال دوم در سطح ژنراتور پاسخ می‌دهد. این راهنما هم API سازنده و هم سینتکس انتخاب‌کننده درون‌خطی که تولید می‌کند را پوشش داد، نماد QR چهار بخشی را تولید کرد، بارگذاری رمزگشایی‌شده را تأیید کرد و تفاوت اندازه را نسبت به حالت خودکار اندازه‌گیری کرد.

ترجیحاً از سازنده برای کد برنامه استفاده کنید — این خطاهای حالت را در محل فراخوانی به جای اسکنر می‌گیرد. و مرحله اندازه‌گیری را حفظ کنید. تنظیم حالت به صورت دستی در بارهای همگن طولانی یک برنده واقعی است و در بارهای مختلط کوتاه که هزینه تغییر حالت از صرفه‌جویی بیشتر می‌شود، یک ضرر خالص است. هر دو را تولید کنید، تعداد ماژول‌ها را مقایسه کنید و بگذارید نتیجه تصمیم بگیرد که کدام کد را نگهداری کنید.

سوالات متداول

  1. حالت رمزگذاری QR چیست و چرا باید از آن استفاده کنم؟ یک حالت رمزگذاری به ژنراتور QR می‌گوید که یک بخش از داده‌ها را چگونه پردازش کند — عددی، الفبایی، بایتی یا کانجی. هر حالت چگالی داده متفاوتی دارد، بنابراین انتخاب حالت مناسب برای هر بخش، نسخه QR و در نتیجه نماد را تا حد امکان کوچک نگه می‌دارد. Aspose.BarCode این حالت‌ها را حالت‌های فشرده‌سازی می‌نامد؛ مشخصات QR آن‌ها را حالت‌های رمزگذاری می‌نامد.

  2. کدام حالت‌های رمزگذاری توسط QrExtCompactionMode پشتیبانی می‌شود؟ QrExtCompactionMode مقادیر NUMERIC، ALPHA_NUMERIC، BYTES و KANJI را فراهم می‌کند که با چهار حالت داده QR تعریف‌شده در ISO/IEC 18004 مطابقت دارند.

  3. آیا باید از QrExtCodetextBuilder یا انتخابگرهای EXTENDED درون‌خطی برای تنظیم حالت استفاده کنم؟
    برای کد برنامه از سازنده استفاده کنید. این سازنده با بررسی نوع، از اشتباهات escape بک‌اسلش جلوگیری می‌کند و متن کد گسترش‌یافته را برای شما ترکیب می‌سازد. انتخابگرهای درون‌خطی زمانی مفید هستند که متن کد از تنظیمات، پایگاه داده یا سیستم دیگری که نمی‌تواند سازنده را فراخوانی کند، دریافت شود.

  4. چگونه حالت کدگذاری EXTENDED با حالت کدگذاری استاندارد QR متفاوت است؟
    حالت EXTENDED باعث می‌شود که ژنراتور متن کد را به‌عنوان مجموعه‌ای از بخش‌های از پیش تعریف‌شده، هر کدام با حالت کدگذاری خود، بخواند، به‌جای اینکه تشخیص خودکار حالت را بر روی کل رشته اجرا کند.

  5. آیا می‌توانم حالت‌های کدگذاری مختلف را برای بخش‌های مختلف یک کد QR تنظیم کنم؟ بله. چندین بخش به QrExtCodetextBuilder اضافه کنید، هر کدام با یک QrExtCompactionMode متفاوت، و سازنده یک متن کدگذاری گستردهٔ واحد تولید می‌کند که همهٔ آن‌ها را پوشش می‌دهد.

  6. آیا یک QR کد که با حالت‌های ترکیبی رمزگذاری تولید شده است، با خواننده‌های استاندارد سازگار است؟ بله. رمزگذاری چندبخشی بخشی از مشخصات QR است، بنابراین هر اسکنر سازگار، بار داده را به‌درستی رمزگشایی می‌کند و داده‌های ترکیب‌شده را برمی‌گرداند.

  7. آیا تنظیم حالت رمزگذاری به صورت دستی همیشه یک کد QR کوچکتر تولید می‌کند؟
    خیر. هر مرز بخش هزینه‌ای برای نشانگر حالت و فیلد شمارش کاراکتر دارد، بنابراین تقسیم داده‌ها به بخش‌های کوتاه می‌تواند نماد را بزرگ‌تر کند. انتخاب دستی حالت در مواردی که داده‌های عددی یا کانجی طولانی و همگن هستند، سودمند است.

  8. آیا برای تنظیم حالت‌های رمزگذاری QR با QrExtCodetextBuilder به مجوز نیاز دارم؟ می‌توانید API را بدون مجوز ارزیابی کنید، مشروط به محدودیت‌های ارزیابی. یک مجوز موقت رایگان از وب‌سایت Aspose این محدودیت‌ها را در طول تست رفع می‌کند و استفاده در تولید به یک مجوز کامل نیاز دارد.

  9. کدام نسخه از Aspose.BarCode برای python-net این APIها را پشتیبانی می‌کند؟ QrExtCodetextBuilder، QrExtCompactionMode و QREncodeMode.EXTENDED در Aspose.BarCode for Python via .NET نسخه 26.6 و بالاتر موجود هستند.

بیشتر بخوانید