ZPL을 SBPL로 변환: 라벨을 Zebra에서 SATO 프린터로 마이그레이션
ZPL과 SATO SBPL의 명령 대응, SBPL의 이스케이프 시퀀스 구조, 폰트와 바코드의 차이, 변환 전후 예시, 식품·제약 라인용 체크리스트.
SATO 프린터는 식품 가공, 의약품 포장, 일본계 공장에서 주류이며 SBPL — ZPL의 캐럿 명령이 아닌 ESC 시퀀스로 구성된 언어 — 을 사용합니다. 새 라인에 SATO를 도입하면서 도크에 Zebra를 남기는 공장은 디자인이 언어 독립적이지 않은 한 모든 라벨을 두 벌씩 갖게 됩니다.
명령 대응표
| 작업 | ZPL (Zebra) | SBPL (SATO) |
|---|---|---|
| 시작 / 종료 | ^XA … ^XZ | <ESC>A … <ESC>Z |
| 라벨 크기 | ^PW812 ^LL609 | <ESC>A1 0609 0812 (높이, 폭: 도트) |
| 필드 위치 | ^FO40,30 | <ESC>H0040 <ESC>V0030 |
| 텍스트 | ^A0N,36,36 ^FDHello^FS | <ESC>L0202 <ESC>XU Hello (폰트 + 배율) |
| Code 128 | ^BY2 ^BCN,90,Y,N,N ^FDdata^FS | <ESC>BG02090 data (좁은 바 2, 높이 90) |
| QR 코드 | ^BQN,2,6 ^FDQA,data^FS | <ESC>2D30,L,06,0,0 <ESC>DN0004,data |
| 선 / 박스 | ^GB300,2,2^FS | <ESC>FW02H0300 (선) / <ESC>FW0202V0100H0300 (박스) |
| 매수 | ^PQ5 | <ESC>Q5 |
| 농도 / 속도 | ^MD10 ^PR4 | <ESC>#E3 <ESC>CS4 |
| 회전 | ^FWR 또는 방향 문자 | <ESC>%1 (90°), %2 (180°), %3 (270°) |
<ESC>는 이스케이프 문자(16진 1B)입니다. SBPL 명령은 ESC 뒤에 문자 하나와 고정 폭 숫자 매개변수가 오는 시퀀스이며 위치는 항상 4자리입니다. 그래서 40이 0040이 됩니다.
실제로 바뀌는 것
- 구조: SBPL은 H/V로 위치를 한 번 설정하고 객체를 인쇄하며, 바꾸지 않으면 그 위치가 다음 명령에 이어집니다. ZPL은 각 필드마다 위치를 다시 잡습니다. 단순한 번역은 H/V 초기화를 잊고 필드를 겹쳐 놓습니다.
- 폰트: SBPL의 XU/XS/XM/XB/XL은 정수 L 배율의 비트맵 폰트입니다. 아웃라인 폰트(ESC RD 또는 ESC $)는 ZPL의 ^A0에 가까운 스케일러블 텍스트를 제공합니다. 일본어·중국어 텍스트는 ZPL에 대응물이 없는 전용 폰트 명령을 씁니다.
- 바코드: B 명령은 심볼, 좁은 바, 높이를 하나의 코드로 인코딩합니다(BG = Code 128). 비율은 ^BY처럼 자유롭지 않고 심볼별로 고정됩니다. 가독 문자는 별도 텍스트 필드로 추가해야 합니다.
- 라벨 크기 순서: SBPL A1은 높이, 그다음 폭 순입니다 — 폭부터 생각하는 ZPL 습관과 반대입니다.
- 문자 인코딩: ZPL은 대부분 ASCII이며 코드 페이지는 ^CI로 지정합니다. SATO 일본 모델은 기본 Shift-JIS입니다. 스페인어나 프랑스어 라벨의 악센트 문자는 코드 페이지를 명시적으로 설정해야 합니다.
변환 전후
^XA ^PW812 ^LL609 ^FO40,30 ^A0N,36,36 ^FDSafety Harness^FS ^FO40,130 ^BY2 ^BCN,90,Y,N,N ^FD7501234567893^FS ^PQ1 ^XZ
<ESC>A <ESC>A1 0609 0812 <ESC>H0040 <ESC>V0030 <ESC>L0202 <ESC>XU Safety Harness <ESC>H0040 <ESC>V0130 <ESC>BG02090 7501234567893 <ESC>H0040 <ESC>V0230 <ESC>L0101 <ESC>XS 7501234567893 <ESC>Q1 <ESC>Z
바코드 아래의 가독 숫자는 명시적 텍스트 줄로 추가해야 했습니다 — ZPL은 Y 플래그로 자동 인쇄했습니다.
마이그레이션 체크리스트
- SATO 모델의 해상도와 SBPL인지 AEP를 탑재한 최신 SBPL인지 확인한다 — 일부 명령이 다르다.
- GS1-128과 GS1 DataMatrix 출력을 검증기로 확인한다. SATO의 FNC1 처리는 다른 이스케이프 코드를 쓴다.
- 악센트 문자용 코드 페이지를 설정하고 인쇄하는 모든 언어의 알레르기 표시 줄을 테스트한다.
- 도크의 Zebra 장비용 ZPL 버전을 유지한다.
EtikStudio의 방식
디자인은 물리 단위로 유지됩니다. SATO 프로필로 내보내면 객체마다 위치를 초기화한 SBPL 시퀀스, 인쇄 크기로 매칭한 폰트, 올바른 심볼 코드와 FNC1로 구축한 바코드, 같은 데이터 필드에서 생성한 가독 라인이 만들어집니다. 식품·제약 고객은 하나의 라이브러리에서 Zebra와 SATO를 나란히 운영합니다.
명령 예시는 이해를 돕기 위해 단순화했습니다. 정확한 문법은 프린터 모델과 펌웨어에 따라 다르므로 항상 대상 프린터에서 테스트하세요.