DPL을 ZPL로 변환: Datamax-O'Neil 프린터를 Zebra로 교체
레코드 기반 Datamax DPL 라벨이 ZPL에 어떻게 대응되는지, 단위와 레코드 구조의 차이, 실제 예제, 레거시 I-Class·M-Class 프린터 교체 체크리스트.
Datamax-O'Neil(현재 Honeywell 소속) 프린터는 20년간 창고를 운영해 왔고, 그 DPL 작업은 I-Class가 새것이었을 때 작성된 ERP 인쇄 프로그램 속에 아직 묻혀 있습니다. 이 프린터들이 Zebra ZT로 교체되면 DPL 스트림은 ZPL이 되어야 합니다. DPL은 독특합니다: 이름 있는 매개변수의 명령 대신 고정 폭 숫자 레코드를 사용해 전송은 압축적이지만 읽기는 고통스럽습니다.
명령 대응표
| 작업 | DPL (Datamax-O'Neil) | ZPL (Zebra) |
|---|---|---|
| 시작 / 종료 | <STX>L … E (L이 포맷을 열고 E가 인쇄) | ^XA … ^XZ |
| 단위 | <STX>n = 인치 (1/100 in), <STX>m = 미터법 (1/10 mm) | 도트 |
| 텍스트 | 레코드: 회전, 폰트, 폭×, 높이×, 크기, 행, 열, 데이터 → 1911A030050 0020Hello | ^FO40,30 ^A0N,36,36 ^FDHello^FS |
| Code 128 | 레코드: 회전, 심볼 E, 넓은, 좁은, 높이, 행, 열, 데이터 → 1E2209000650020data | ^BY2 ^BCN,90,Y,N,N ^FDdata^FS |
| 선 / 박스 | l(선) 또는 b(박스)와 치수를 갖는 X 타입 레코드 | ^GB300,2,2^FS |
| 매수 | 포맷 안의 Q0005 | ^PQ5 |
| 농도 / 속도 | H15 (열) / P (속도) 레코드 | ^MD10 ^PR4 |
실제로 바뀌는 것
- 단위: DPL 위치는 도트가 아니라 1/100인치(미터법 모드에서는 1/10 mm)입니다. 인치 모드의 행 0050은 0.50인치 = 203 dpi에서 101도트입니다. 모든 좌표를 변환해야 하며, 프린터 모드(<STX>n 또는 <STX>m)를 먼저 읽지 않으면 모든 것이 잘못된 위치에 놓입니다.
- 행·열 순서: DPL 레코드는 행(세로)을 열(가로) 앞에 둡니다. ZPL의 ^FO는 x 다음 y입니다. 이를 뒤바꾸는 것이 가장 흔한 번역 버그입니다.
- 폰트: DPL 내장 폰트 0~8은 정수 배율 비트맵이고, 폰트 9는 A03 같은 코드로 스무스(스케일러블) 폰트를 선택합니다. 비트맵은 측정 높이로 ^A0에 대응시키세요.
- 바코드: DPL은 심볼을 한 글자(A Code 39, B UPC-A, E Code 128, F EAN-13, …)로 인코딩하고 넓은·좁은 바 자릿수를 붙입니다. ZPL은 ^B 명령과 ^BY를 씁니다. DPL 높이는 레코드 안에 있고, 가독 라인은 플래그가 아니라 심볼 문자의 대·소문자로 선택합니다.
- 그래픽: DPL은 <STX>I…로 이미지를 다운로드합니다. 한 번 ^GF나 저장 ^DG 그래픽으로 변환하세요.
변환 전후(단순화)
<STX>n <STX>L D11 1911A030050 0020Safety Harness 1E2209000650020 7501234567893 Q0001 E
^XA ^PW812 ^LL609 ^FO40,101 ^A0N,36,36 ^FDSafety Harness^FS ^FO40,132 ^BY2 ^BCN,90,Y,N,N ^FD7501234567893^FS ^PQ1 ^XZ
1/100인치의 행 0050과 0065는 101도트와 132도트가 되었고, 열 0020은 x = 40이 되었습니다. 레코드 필드는 이름 있는 ZPL 매개변수로 풀렸습니다.
마이그레이션 체크리스트
- 오래된 디자인 파일이 아니라 ERP 스풀에서 실제 DPL 작업을 캡처한다 — 실제로 인쇄된 것은 스풀이다.
- 좌표를 변환하기 전에 단위 모드와 원래 프린터 해상도(203 또는 300 dpi I-Class)를 확인한다.
- Zebra에서 모든 바코드를 검증한다. DPL 좁은 바 자릿수는 ^BY와 1:1로 대응하지 않는다.
- ERP가 동적으로 채우는 레코드 필드를 식별한다. 그것이 새 템플릿의 가변 필드가 된다.
EtikStudio의 방식
DPL 인터프리터는 단위 모드를 읽고 각 레코드를 위치·폰트·크기·데이터로 풀어 라벨을 밀리미터 단위로 렌더링합니다. Zebra 프로필로 내보내면 변환된 좌표와 재구축한 바코드를 가진 ZPL이 생성되고, ERP가 채우던 필드는 같은 데이터에 연결된 변수가 됩니다.
명령 예시는 이해를 돕기 위해 단순화했습니다. 정확한 문법은 프린터 모델과 펌웨어에 따라 다르므로 항상 대상 프린터에서 테스트하세요.