برو به محتوا

ZPL compatibility of the OpenZPL engine

The OpenZPL engine draws the 64 ZPL commands of the command reference, one of them partially, and skips the ones that configure the printer. The barcode and text commands listed under “Not supported yet” don't draw correctly today.

Tested 2026-10-26 with openzpl-api 10d0497 at 8 dpmm.

How we test

Every example on this site is a fixture: a short synthetic label that the engine renders to a PNG when the site is built. If a fixture's ZPL changes and its image isn't rendered again, the build fails, so the image always shows what the engine does with that exact code.

The 140 fixtures are public in fixtures.json, with their size, density and image, under CC0. Use them to test any ZPL renderer.

A preview isn't a print. Darkness, media, firmware and the fonts installed on a printer change the result, so check critical labels on the printer itself.

Drawn

Commandاین چه کاری انجام می‌دهدCategoryEvidence
^XA یک برچسب را باز می‌کند. همه چیز تا ^XZ یک برچسب است. قالب برچسب Rendered example
^XZ برچسب باز شده توسط ^XA را می‌بندد و چاپ می‌کند. قالب برچسب Rendered example
^PW عرض برچسب را به پیکسل تنظیم می‌کند. قالب برچسب Rendered example
^LL طول برچسب را به پیکسل تنظیم می‌کند. قالب برچسب Rendered example
^LH مبدأیی که هر موقعیت فیلد از آن اندازه‌گیری می‌شود را جابه‌جا می‌کند. قالب برچسب Rendered example
^LS هر فیلد را به اندازه تعداد پیکسل داده شده به سمت چپ جابجا می‌کند. قالب برچسب Rendered example
^LT کل برچسب را به مقدار مشخصی از ردیف‌های نقطه بالا یا پایین حرکت می‌دهد. قالب برچسب Rendered example
^PO برچسب را به صورت عادی (N) یا وارونه (I) چاپ می‌کند. قالب برچسب Rendered example
^PM کل برچسب را به صورت افقی آینه می‌کند وقتی به Y تنظیم شده باشد. قالب برچسب Rendered example
^PQ تعداد برچسب‌هایی که باید چاپ شود را تنظیم می‌کند؛ هر یک به عنوان یک برچسب در پیش‌نمایش شمارش می‌شود. قالب برچسب Rendered example
^MU واحد اندازه‌گیری را به نقطه، اینچ یا میلی‌متر تغییر می‌دهد. قالب برچسب Rendered example
^CI مجموعه کاراکتر را انتخاب می‌کند. ^CI28 UTF-8 است. قالب برچسب Rendered example
^FO موقعیت فیلد را تنظیم می‌کند: مختصات x و y از گوشه بالا سمت چپ به پیکسل. فیلدها و موقعیت Rendered example
^FT یک فیلد را با پایه آن به‌جای گوشه بالایی چپ قرار می‌دهد. فیلدها و موقعیت Rendered example
^FD متن یا داده بارکد میدان فعلی. فیلدها و موقعیت Rendered example
^FS میدان جاری را پایان می‌دهد. فیلدها و موقعیت Rendered example
^FB متن را به یک بلوک با عرض، تعداد خط و چینش می‌پیچد. فیلدها و موقعیت Rendered example
^FR فیلد را سفید بر روی سیاه بر هر چیزی که زیر آن است چاپ می‌کند. فیلدها و موقعیت Rendered example
^FH اجازه می‌دهد ^FD شامل فرارهای هگز مانند _0D باشد. فیلدها و موقعیت Rendered example
^FW چرخش پیش‌فرض برای فیلدهای زیر را تنظیم می‌کند. فیلدها و موقعیت Rendered example
^FN فیلدی متغیر را در یک فرمت ذخیره شده نام‌گذاری می‌کند. فیلدها و موقعیت Rendered example
^FX یک نظر. چاپگر تمام چیزها را تا دستور بعدی نادیده می‌گیرد. فیلدها و موقعیت Rendered example
^SN شماری که در هر برچسب افزایش می‌یابد را چاپ می‌کند. فیلدها و موقعیت PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example
^A فونت، چرخش و اندازه را برای فیلد متنی بعدی انتخاب می‌کند. متن و فونت‌ها Rendered example
^A@ فونتی را با نام فایل آن بر روی چاپگر انتخاب می‌کند. متن و فونت‌ها Rendered example
^CF فونت و اندازه‌ای که هنگام عدم وجود ^A در یک فیلد استفاده می‌شود را تنظیم می‌کند. متن و فونت‌ها Rendered example
^TB یک فیلد متنی را درون یک جعبه با عرض و ارتفاع مشخص قرار می‌دهد. متن و فونت‌ها Rendered example
^CW یک نام یک حرفی به یک فایل فونت اختصاص می‌دهد. متن و فونت‌ها Stores or recalls data; no image of its own
^BY عرض ماژول، نسبت عریض به باریک و ارتفاع برای بارکدهای زیر را تنظیم می‌کند. بارکدها Rendered example
^BC بارکد کد 128، رایج‌ترین بارکد روی برچسب‌های حمل و نقل. بارکدها Rendered example
^B3 بارکد کد 39. بارکدها Rendered example
^B2 بارکد اینترلیو ۲ از ۵، تنها عددی. بارکدها Rendered example
^BE بارکد خرده‌فروشی EAN-13. بارکدها Rendered example
^B8 بارکد خرده‌فروشی EAN-8. بارکدها Rendered example
^BU بارکد خرده‌فروشی UPC-A. بارکدها Rendered example
^B9 بارکد خرده‌فروشی UPC-E. بارکدها Rendered example
^BQ کد QR. داده‌های فیلد با سطح تصحیح خطا و حالت ورودی آغاز می‌شود، همانند ^FDQA,text. بارکدها Rendered example
^BX بارکد 2D ماتریس داده. بارکدها Rendered example
^B7 بارکد ۲ بعدی PDF417 انباشته. بارکدها Rendered example
^BO بارکد 2 بعدی آزتک. بارکدها Rendered example
^BD ماکسی کد، استفاده شده توسط UPS. بارکدها Rendered example
^B0 بارکد 2D آزتک؛ همان دستور ^BO. بارکدها Rendered example
^BA بارکد کد 93: متراکم‌تر از کد 39، با دو کاراکتر کنترل درونی. بارکدها Rendered example
^BK بارکد کودابر، مورد استفاده توسط کتابخانه‌ها، بانک‌های خون و برخی پیک‌ها. بارکدها Rendered example
^BL بارکد LOGMARS، کد 39 نظامی ایالات متحده با یک رقم بررسی اجباری. بارکدها Rendered example
^B1 بارکد کد 11، عددی، مورد استفاده در تجهیزات مخابراتی. بارکدها Rendered example
^BM بارکد MSI (پلسسی اصلاح شده) عددی است که بر روی برچسب‌های قفسه استفاده می‌شود. بارکدها Rendered example
^BP بارکد پلسسی، عددی، با یک رقم چک CRC. بارکدها Rendered example
^BS افزودنی ۲ یا ۵ رقمی که در کنار کد UPC یا EAN چاپ می‌شود. بارکدها Rendered example
^BZ بارکدهای پستی ایالات متحده: POSTNET، PLANET و Mail هوشمند. بارکدها Rendered example
^B5 بارکد USPS PLANET. بارکدها Rendered example
^BR بارکد GS1 (قبلاً RSS): بارکدهای GTIN فشرده برای محصولات و کوپن‌ها. بارکدها PartialGS1 DataBar types 1 to 6 are drawn. Type 6 (Expanded) encodes the data as written and scans the same as Labelary's, but its last characters can differ; types 7 to 12 (UPC/EAN composites) print the data as text. Rendered example
^BF مایکروPDF417، نسخه کوچکتر PDF417 برای برچسب‌های کوچک. بارکدها Rendered example
^GB یک جعبه یا خط می‌کشد: عرض، ارتفاع، ضخامت حاشیه، رنگ و گردی. گرافیک‌ها Rendered example
^GC یک دایره می‌کشد: قطر، ضخامت حاشیه و رنگ. گرافیک‌ها Rendered example
^GE یک بیضی می‌کشد. گرافیک‌ها Rendered example
^GD یک خط قطری می‌کشد. گرافیک‌ها Rendered example
^GF یک تصویر بیت‌مپ را در برچسب جاسازی می‌کند (هگزadecimal ASCII، باینری یا Z64). گرافیک‌ها Rendered example
^GS نماد ثبت‌شده، حق چاپ یا نماد دیگر را چاپ می‌کند. گرافیک‌ها Rendered example
^DF فرمت برچسب را بر روی چاپگر زیر یک نام ذخیره می‌کند. فرمت‌ها و تصاویر ذخیره شده Rendered example
^XF یک فرمت ذخیره‌شده را برای پر کردن فیلدهای ^FN یادآوری می‌کند. فرمت‌ها و تصاویر ذخیره شده Rendered example
~DG تصویری را بر روی چاپگر زیر یک نام ذخیره می‌کند. فرمت‌ها و تصاویر ذخیره شده Stores or recalls data; no image of its own
^XG تصویری که با ~DG ذخیره شده است را چاپ می‌کند. فرمت‌ها و تصاویر ذخیره شده Stores or recalls data; no image of its own
^IM تصویر ذخیره‌شده را در مبدأ فیلد فعلی چاپ می‌کند. فرمت‌ها و تصاویر ذخیره شده Stores or recalls data; no image of its own

Ignored on purpose

These commands set up the printer, not the label. The API accepts them and renders the label as if they weren't there; we checked that the image is byte-identical without them.

GroupCommands
Media and sensors^MM, ^MN, ^MT, ^MF, ~JS
Speed, darkness and tear-off^PR, ~SD, ^MD, ~TA
Calibration and printer state~JC, ~JA, ~JR, ^JU, ~HS
Network, RFID setup and host queries^NC, ^NI, ^RS, ~HI, ~HM

Not supported yet

Each one was tested by placing it in a label at 8 dpmm. None of them fails the request: the label renders, without the symbol.

CommandSymbology or featureWhat the engine does today
^B4Code 49No bars; the data is printed as text (Labelary doesn't draw it either).
^BBCODABLOCKNo symbol; the data is printed as text (Labelary doesn't draw it either).
^BTTLC39No symbol; the data is printed as text (Labelary doesn't draw it either).

Known differences

  • A format with no fields, such as ^XA^XZ, returns 400 ERROR: No labels found in the ZPL instead of a blank image.
  • Fonts: Zebra's font 0 (CG Triumvirate Bold Condensed) can't be bundled, so ^A0 is drawn with Roboto Condensed Bold, with spacing calibrated per character. The bitmap fonts ^AA–^AH are drawn with DejaVu Sans Mono. Text widths can differ by a few dots from a given printer.
  • An RFID write (^RF followed by ^FD…^FS) draws its data as text; a printer encodes it in the tag and prints nothing.
  • EPL reverse text (the R flag of A) gets a black box the size of the character cells, as on the printer; it can run past the last character because the substitute font is narrower than EPL's bitmap fonts.

انتقال از Labelary

The API keeps Labelary's v1 paths and headers, so most clients only change the host. See Migrate from Labelary for the tested differences and OpenZPL vs Labelary for the comparison.

بازخورد