هر تولیدکننده 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() آنها را به رشته فرمت‑گسترشیافتهای که ژنراتور میفهمد، ترکیب میسازد.
- کلاسهای تولید را وارد کنید.
- یک
QrExtCodetextBuilderایجاد کنید. - یک بخش عددی با
QrExtCompactionMode.NUMERICاضافه کنید. - یک بخش حروف‑عدد با
QrExtCompactionMode.ALPHA_NUMERICاضافه کنید. - یک بخش بایت با
QrExtCompactionMode.BYTESاضافه کنید. - یک بخش کانجی با
QrExtCompactionMode.KANJIاضافه کنید. - متن کد گسترده ترکیبی را بازیابی کنید.
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، اطلاعات بخش نادیده گرفته میشود و نشانگرهای انتخابکننده بهعنوان متن بارگذاری واقعی کدگذاری میشوند.
- یک
BarcodeGeneratorرا باEncodeTypes.QRو متن کد گسترده ایجاد کنید. encode_modeرا بهQREncodeMode.EXTENDEDتنظیم کنید.- وضوح را پیکربندی کنید و بهصورت اختیاری سطح تصحیح خطا و حاشیه را تنظیم کنید.
- بارکد را به صورت 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. تأیید اعمال حالت رمزگذاری
تولید موفقیتآمیز هیچ چیزی درباره این که آیا حالتهای هر‑بخش اعمال شدهاند یا نه ثابت نمیکند. مرحلهٔ رمزگشایی همان چیزی است که یک نماد بهدرستی کدگذاریشده را از نمادی که نشانگرهای انتخابکننده را به عنوان داده حمل میکند، جدا میکند.
- یک
BarCodeReaderرا با مسیر فایل وDecodeType.QRمقداردهی اولیه کنید. - نتایج را بهصورت ملموس نمایش دهید تا خواندن ناموفق قابل مشاهده باشد.
- متن رمزگشاییشده را با ترکیب مورد انتظار مقایسه کنید.
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 چهار بخشی را تولید کرد، بارگذاری رمزگشاییشده را تأیید کرد و تفاوت اندازه را نسبت به حالت خودکار اندازهگیری کرد.
ترجیحاً از سازنده برای کد برنامه استفاده کنید — این خطاهای حالت را در محل فراخوانی به جای اسکنر میگیرد. و مرحله اندازهگیری را حفظ کنید. تنظیم حالت به صورت دستی در بارهای همگن طولانی یک برنده واقعی است و در بارهای مختلط کوتاه که هزینه تغییر حالت از صرفهجویی بیشتر میشود، یک ضرر خالص است. هر دو را تولید کنید، تعداد ماژولها را مقایسه کنید و بگذارید نتیجه تصمیم بگیرد که کدام کد را نگهداری کنید.
سوالات متداول
حالت رمزگذاری QR چیست و چرا باید از آن استفاده کنم؟ یک حالت رمزگذاری به ژنراتور QR میگوید که یک بخش از دادهها را چگونه پردازش کند — عددی، الفبایی، بایتی یا کانجی. هر حالت چگالی داده متفاوتی دارد، بنابراین انتخاب حالت مناسب برای هر بخش، نسخه QR و در نتیجه نماد را تا حد امکان کوچک نگه میدارد. Aspose.BarCode این حالتها را حالتهای فشردهسازی مینامد؛ مشخصات QR آنها را حالتهای رمزگذاری مینامد.
کدام حالتهای رمزگذاری توسط QrExtCompactionMode پشتیبانی میشود؟
QrExtCompactionModeمقادیرNUMERIC،ALPHA_NUMERIC،BYTESوKANJIرا فراهم میکند که با چهار حالت داده QR تعریفشده در ISO/IEC 18004 مطابقت دارند.آیا باید از QrExtCodetextBuilder یا انتخابگرهای EXTENDED درونخطی برای تنظیم حالت استفاده کنم؟
برای کد برنامه از سازنده استفاده کنید. این سازنده با بررسی نوع، از اشتباهات escape بکاسلش جلوگیری میکند و متن کد گسترشیافته را برای شما ترکیب میسازد. انتخابگرهای درونخطی زمانی مفید هستند که متن کد از تنظیمات، پایگاه داده یا سیستم دیگری که نمیتواند سازنده را فراخوانی کند، دریافت شود.چگونه حالت کدگذاری EXTENDED با حالت کدگذاری استاندارد QR متفاوت است؟
حالت EXTENDED باعث میشود که ژنراتور متن کد را بهعنوان مجموعهای از بخشهای از پیش تعریفشده، هر کدام با حالت کدگذاری خود، بخواند، بهجای اینکه تشخیص خودکار حالت را بر روی کل رشته اجرا کند.آیا میتوانم حالتهای کدگذاری مختلف را برای بخشهای مختلف یک کد QR تنظیم کنم؟ بله. چندین بخش به
QrExtCodetextBuilderاضافه کنید، هر کدام با یکQrExtCompactionModeمتفاوت، و سازنده یک متن کدگذاری گستردهٔ واحد تولید میکند که همهٔ آنها را پوشش میدهد.آیا یک QR کد که با حالتهای ترکیبی رمزگذاری تولید شده است، با خوانندههای استاندارد سازگار است؟ بله. رمزگذاری چندبخشی بخشی از مشخصات QR است، بنابراین هر اسکنر سازگار، بار داده را بهدرستی رمزگشایی میکند و دادههای ترکیبشده را برمیگرداند.
آیا تنظیم حالت رمزگذاری به صورت دستی همیشه یک کد QR کوچکتر تولید میکند؟
خیر. هر مرز بخش هزینهای برای نشانگر حالت و فیلد شمارش کاراکتر دارد، بنابراین تقسیم دادهها به بخشهای کوتاه میتواند نماد را بزرگتر کند. انتخاب دستی حالت در مواردی که دادههای عددی یا کانجی طولانی و همگن هستند، سودمند است.آیا برای تنظیم حالتهای رمزگذاری QR با QrExtCodetextBuilder به مجوز نیاز دارم؟ میتوانید API را بدون مجوز ارزیابی کنید، مشروط به محدودیتهای ارزیابی. یک مجوز موقت رایگان از وبسایت Aspose این محدودیتها را در طول تست رفع میکند و استفاده در تولید به یک مجوز کامل نیاز دارد.
کدام نسخه از Aspose.BarCode برای python-net این APIها را پشتیبانی میکند؟
QrExtCodetextBuilder،QrExtCompactionModeوQREncodeMode.EXTENDEDدر Aspose.BarCode for Python via .NET نسخه 26.6 و بالاتر موجود هستند.
