דלג לתוכן

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 ברקוד 2 מתוך 5 עם רווחים, רק מספרי. ברקודים Rendered example
^BE ברקוד קמעונאי EAN-13. ברקודים Rendered example
^B8 ברקוד קמעונאי EAN-8. ברקודים Rendered example
^BU ברקוד קמעונאי UPC-A. ברקודים Rendered example
^B9 ברקוד קמעונאי UPC-E. ברקודים Rendered example
^BQ QR Code. הנתונים בשדה מתחילים ברמת תיקון השגיאות ובמצב הקלט, כפי ב-^FDQA,text. ברקודים Rendered example
^BX ברקוד מטריצת נתונים 2D. ברקודים Rendered example
^B7 בקוד ברקוד תלת-ממדי מוערם PDF417. ברקודים Rendered example
^BO ברקוד אזטק 2D. ברקודים Rendered example
^BD מאקיסוד, בשימוש ב-UPS. ברקודים Rendered example
^B0 ברקוד אזטק 2D; אותה פקודה כמו ^BO. ברקודים Rendered example
^BA ברקוד קוד 93: יותר צפוף מקוד 39, עם שני תווי בדיקה מובנים. ברקודים Rendered example
^BK ברקוד Codabar, בשימוש בספריות, בנקי דם וחלק מהשירותים. ברקודים Rendered example
^BL ברקוד LOGMARS, קוד 39 של הצבא האמריקאי עם ספרת ביקורת חובה. ברקודים Rendered example
^B1 ברקוד קוד 11, מספרי, בשימוש בציוד תקשורת. ברקודים Rendered example
^BM ברקוד MSI (Plessey המותאם), מספרי, משמש על תוויות מדף. ברקודים Rendered example
^BP ברקוד פלסי, מספרי, עם ספרת בדיקה CRC. ברקודים Rendered example
^BS התוסף של 2 או 5 ספרות מודפס ליד קוד UPC או EAN. ברקודים Rendered example
^BZ ברקודים דואר אמריקאיים: POSTNET, PLANET ודואר חכם. ברקודים Rendered example
^B5 ברקוד USPS PLANET. ברקודים Rendered example
^BR GS1 DataBar (בעבר 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 MicroPDF417, PDF417 קטן יותר עבור תוויות קטנות. ברקודים Rendered example
^GB משרטט תיבה או קו: רוחב, גובה, עובי גבול, צבע ועיגול. גרפיקה Rendered example
^GC משרטט מעגל: קוטר, עובי גבול וצבע. גרפיקה Rendered example
^GE משרטט אליפסה. גרפיקה Rendered example
^GD משרטט קו אלכסוני. גרפיקה Rendered example
^GF מטמיע תמונת bitmap בתווית (ASCII hex, בינארי או 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.

משוב