Šokti į turinį

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

CommandKą tai daroCategoryEvidence
^XA Atidaro etiketę. Viskas iki ^XZ yra viena etiketė. Etiketo formatas Rendered example
^XZ Uždaro ^XA atidarytą etiketę ir ją atspausdina. Etiketo formatas Rendered example
^PW Nustato etiketės plotį taškais. Etiketo formatas Rendered example
^LL Nustato etiketės ilgį taškais. Etiketo formatas Rendered example
^LH Perkelia kilmę, nuo kurios matuojama kiekviena laukelio pozicija. Etiketo formatas Rendered example
^LS Perkelia kiekvieną lauką į kairę pagal nurodytą taškų skaičių. Etiketo formatas Rendered example
^LT Perkelia visą etiketę į viršų arba žemyn pagal nurodytą taškų eilučių skaičių. Etiketo formatas Rendered example
^PO Spausdina etiketę normaliai (N) arba apvertus (I). Etiketo formatas Rendered example
^PM Apverčia visą etiketę horizontaliai, kai nustatyta Y. Etiketo formatas Rendered example
^PQ Nustato, kiek etiketų spausdinti; kiekviena skaičiuojama kaip etikete per peržiūrą. Etiketo formatas Rendered example
^MU Pakeičia matavimo vienetą į taškus, colius arba milimetrus. Etiketo formatas Rendered example
^CI Pasirinko simbolių rinkinį. ^CI28 yra UTF-8. Etiketo formatas Rendered example
^FO Nustato lauko padėtį: x, y koordinatės taškais nuo viršutinio kairiojo kampo. Laukai ir pozicija Rendered example
^FT Užduoda lauko poziciją pagal jo pagrindinę liniją, o ne pagal viršutinį kairįjį kampą. Laukai ir pozicija Rendered example
^FD Dabartinio lauko tekstas arba brūkšninio kodo duomenys. Laukai ir pozicija Rendered example
^FS Baigia dabartinį lauką. Laukai ir pozicija Rendered example
^FB Apvynioja tekstą į bloką su plotu, eilučių skaičiumi ir išlyginimu. Laukai ir pozicija Rendered example
^FR Spausdina lauką baltą ant juodo, virš to, kas po juo. Laukai ir pozicija Rendered example
^FH Leiskite ^FD turėti heksadecimalinius pabėgimus, tokius kaip _0D. Laukai ir pozicija Rendered example
^FW Nustato numatytąjį sukimo kampą sekančioms laukams. Laukai ir pozicija Rendered example
^FN Pavadina kintamąjį lauką saugomame formate. Laukai ir pozicija Rendered example
^FX Komentaras. Spaustuvas ignoruoja viską iki kito įsakymo. Laukai ir pozicija Rendered example
^SN Spausdina skaičių, kuris didėja kiekvienoje etiketėje. Laukai ir pozicija PartialRead but not drawn: the serial field is left out and copies aren't incremented (the same as Labelary's preview). Rendered example
^A Pasirinko šriftą, sukimo ir dydžio parametrus kitam tekstiniam laukui. Tekstas ir šriftai Rendered example
^A@ Pasirinko šriftą pagal jo failo pavadinimą spausdintuve. Tekstas ir šriftai Rendered example
^CF Nustato šriftą ir dydį, kai laukas neturi ^A. Tekstas ir šriftai Rendered example
^TB Aprašo teksto lauką viduje nurodyto pločio ir aukščio dėžutėje. Tekstas ir šriftai Rendered example
^CW Vienos raides pavadinimas priskiriamas šrifto failui. Tekstas ir šriftai Stores or recalls data; no image of its own
^BY Nustato modulio plotį, plati-iki-siauri santykį ir aukštį sekančioms juostelėms. Brūkšniniai kodai Rendered example
^BC Kodavimas 128 brūkšninis kodas, dažniausiai naudojamas siuntimo etiketėse. Brūkšniniai kodai Rendered example
^B3 Kodavimas 39 brūkšninis kodas. Brūkšniniai kodai Rendered example
^B2 Kryžminis 2 iš 5 brūkšninis kodas, tik skaičiai. Brūkšniniai kodai Rendered example
^BE EAN-13 mažmeninis brūkšninis kodas. Brūkšniniai kodai Rendered example
^B8 EAN-8 mažmeninis brūkšninis kodas. Brūkšniniai kodai Rendered example
^BU UPC-A mažmeninės prekybos brūkšninis kodas. Brūkšniniai kodai Rendered example
^B9 UPC-E mažmeninės prekybos brūkšninis kodas. Brūkšniniai kodai Rendered example
^BQ QR kodas. Lauko duomenys prasideda nuo klaidų taisymo lygio ir įvesties režimo, kaip ^FDQA,text. Brūkšniniai kodai Rendered example
^BX Duomenų matrica 2D brūkšninis kodas. Brūkšniniai kodai Rendered example
^B7 PDF417 sujungtas 2D brūkšninis kodas. Brūkšniniai kodai Rendered example
^BO Aztec 2D brūkšninis kodas. Brūkšniniai kodai Rendered example
^BD MaxiCode, naudojamas UPS. Brūkšniniai kodai Rendered example
^B0 Aztec 2D brūkšninis kodas; ta pati komanda kaip ^BO. Brūkšniniai kodai Rendered example
^BA Kodas 93 brūkšninis kodas: tankesnis nei Kodas 39, su dviem įmontuotais tikrinimo simboliais. Brūkšniniai kodai Rendered example
^BK Codabar brūkšninis kodas, naudojamas bibliotekų, kraujo bankų ir kai kurių kurjerių. Brūkšniniai kodai Rendered example
^BL LOGMARS brūkšninis kodas, JAV kariuomenės Code 39 su privalomu patikros skaitmeniu. Brūkšniniai kodai Rendered example
^B1 Kodas 11 brūkšninis kodas, skaitmeninis, naudojamas telekomunikacijų įrangoje. Brūkšniniai kodai Rendered example
^BM MSI (modifikuotas Plessey) brūkšninis kodas, skaitinis, naudojamas lentynų etiketėse. Brūkšniniai kodai Rendered example
^BP Plessey brūkšninis kodas, skaitinis, su CRC tikrinimo skaitmeniu. Brūkšniniai kodai Rendered example
^BS 2 arba 5 skaitmenų papildymas spausdinamas šalia UPC arba EAN kodo. Brūkšniniai kodai Rendered example
^BZ JAV pašto brūkšniniai kodai: POSTNET, PLANET ir Intelligent Mail. Brūkšniniai kodai Rendered example
^B5 USPS PLANET brūkšninis kodas. Brūkšniniai kodai Rendered example
^BR GS1 DataBar (anksčiau RSS): kompaktiški GTIN brūkšniniai kodai maisto produktams ir kuponams. Brūkšniniai kodai 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, mažesnė PDF417 mažoms etiketėms. Brūkšniniai kodai Rendered example
^GB Piešia langelį ar liniją: plotis, aukštis, rėmelio storis, spalva ir apvalinimas. Grafika Rendered example
^GC Piešia ratą: skersmuo, rėmelio storis ir spalva. Grafika Rendered example
^GE Piešia elipsę. Grafika Rendered example
^GD Piešia įstrižainę. Grafika Rendered example
^GF Įterpia bitmap vaizdą į etiketę (ASCII hex, binarinis arba Z64). Grafika Rendered example
^GS Spausdina registruotą, autorinį ar kitą simbolį. Grafika Rendered example
^DF Išsaugo etiketės formatą spausdintuve po pavadinimu. Išsaugoti formatai ir vaizdai Rendered example
^XF Atkuria saugomą formatą, kad užpildytų jo ^FN laukus. Išsaugoti formatai ir vaizdai Rendered example
~DG Išsaugo vaizdą spausdintuve po pavadinimu. Išsaugoti formatai ir vaizdai Stores or recalls data; no image of its own
^XG Spausdina vaizdą, saugomą su ~DG. Išsaugoti formatai ir vaizdai Stores or recalls data; no image of its own
^IM Spausdina saugomą vaizdą esamoje lauko pradžioje. Išsaugoti formatai ir vaizdai 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.

Perėjimas iš 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.

Atsiliepimai