Convert IPL to ZPL: migrating Intermec label formats to Zebra printers
How Intermec IPL's format/data model differs from ZPL, how stored formats and field data become a single ZPL job, a worked example and a checklist for retiring PM4i, PX4i and 3400 printers.
この記事は英語とスペイン語で提供されています。
Intermec printers (PM4i, PX4i/PX6i, the 3400/4400 series) were the workhorses of manufacturing and distribution for years, and IPL is unlike anything else: the label layout is a stored format defined once, and each print job only sends the data for its fields. When those printers are retired for Zebra, both halves — the format in the printer and the data stream in the ERP — must be combined into self-contained ZPL jobs.
How the two models differ
| Concept | IPL (Intermec) | ZPL (Zebra) |
|---|---|---|
| Layout | Stored format: <STX><ESC>P;E1;F1;… fields …;R;<ETX> | Inline in every job between ^XA and ^XZ (or stored with ^DF / recalled with ^XF) |
| Text field | H0;o100,100;f0;c20;h2;w2;d0,30 (field, origin, font, height/width, data length) | ^FO100,100 ^A0N,36,36 ^FN1 ^FS |
| Barcode field | B1;o100,300;c6;h60;w2;d0,20 (c6 = Code 128) | ^FO100,300 ^BY2 ^BCN,60,Y,N,N ^FN2 ^FS |
| Print with data | <STX><ESC>E1<ETX> <STX><CAN><ETX> <STX>data1<CR>data2<CR><ETX> <STX><ETB><ETX> | ^XA ^XFFORMAT ^FN1^FDdata1^FS ^FN2^FDdata2^FS ^XZ |
| Units | dots (some models 1/100 in) | dots |
What actually changes
- You need both artifacts: the format definition (often uploaded to the printer years ago and never stored elsewhere) and a sample data stream. Read the format back from the printer with the upload command before it is decommissioned.
- Field order is positional: data lines are matched to fields by sequence, so the ZPL job must assign ^FN numbers in the same order the ERP sends values.
- Fonts: IPL font codes (f0–f7 bitmaps, f20+ outline) map to ^A0 by measured size; IPL height/width magnifiers are integers.
- Barcode codes: c0 Code 39, c1 Code 93, c2 Interleaved 2 of 5, c5 UPC/EAN, c6 Code 128, c8 PDF417 (varies by model) → the corresponding ^B command.
- Control characters: IPL jobs are framed with STX/ETX and use CR between fields; these must be stripped, not translated.
Before and after (simplified)
<STX><ESC>P;E1;F1;<ETX> <STX>H0;o40,30;f0;c20;h3;w3;d0,30;<ETX> <STX>B1;o40,130;c6;h90;w2;d0,20;<ETX> <STX>R;<ETX> <STX><ESC>E1<ETX><STX><CAN><ETX> <STX>Safety Harness<CR>7501234567893<CR><ETX> <STX><ETB><ETX>
^XA ^PW812 ^LL609 ^FO40,30 ^A0N,36,36 ^FDSafety Harness^FS ^FO40,130 ^BY2 ^BCN,90,Y,N,N ^FD7501234567893^FS ^PQ1 ^XZ
Migration checklist
- Export every stored format from every Intermec printer before switching them off; they are frequently the only copy.
- Pair each format with a captured data stream to learn which fields are variable and in what order.
- Decide whether to keep the format/data split in ZPL (^DF/^XF with ^FN) so the ERP integration barely changes, or move to full inline jobs.
- Grade barcodes on the Zebra; Intermec heads and Zebra heads differ in dot gain.
How EtikStudio does it
Import the IPL format and a sample data stream together; the interpreter merges them into one visual design with the data fields marked as variables in ERP order. From there, export ZPL as inline jobs or as a stored ^DF format with ^FN fields, whichever keeps your integration simpler.
コマンド例は分かりやすさのため簡略化しています。正確な構文はプリンタの機種とファームウェアにより異なります。必ず対象プリンタでテストしてください。