라벨 템플릿
라벨 라이브러리의 프린터 명령 파일 하나입니다. 이름과 인코딩, 프린터 명령 편집기와 파일 가져오기, 마커 문법, 설치된 Windows 대기열, 그리고 시험 전송입니다.
라벨 템플릿은 라벨 라이브러리(Process > 템플릿 > 라벨)의 한 줄입니다. 실행 값이 들어갈 자리에 {{NAME}} 마커를 둔 프린터 명령 파일(ZPL, EPL, CPCL을 비롯한 모든 RAW 명령 언어)입니다. Ganter Lab은 그 바이트를 Windows RAW 대기열로 보내고 마커를 바꿔 넣을 뿐, 프린터 언어를 해석하지도 그리지도 미리 보여 주지도 않습니다. 그래서 배치 자체는 프린터 제조사의 도구에서 만듭니다. 편집에는 Process 관리가 필요합니다. 유닛이 돌고 있는 동안에는 페이지 전체가 움직이지 않고, 런타임이 정지해 있으면 시험 전송이 거부됩니다. 새 템플릿은 "Label"("Label 2" 등)이라는 이름으로 비어 있는 채 태어나며, 명령을 담기 전까지는 아무것도 인쇄하지 않습니다. 그리거나 보내는 모든 길이 빈 템플릿을 거부합니다.
페이지는 일하는 순서대로 카드 다섯입니다. 정체성과 인코딩, 명령, 그 안에서 찾은 마커, 디자이너에서 파일을 준비하는 법, 그리고 시험 전송입니다.
템플릿
| 항목 | 무엇인가 | 값 / 기본값 | 효과 |
|---|---|---|---|
| 이름 | 라이브러리와 모든 라벨 명령이 보여 주는 이름입니다. | 글이며 입력란에서 떠날 때 확정됩니다. | 비어 있는 이름은 거부되고("라벨 템플릿에는 이름이 있어야 합니다.") 앞의 이름이 그대로 남습니다. |
| 인코딩 | 보관된 바이트를 글로 되읽는 방식이고, 바꿔 넣는 모든 값을 적는 방식입니다. | UTF-8(기본값), Latin-1, ASCII입니다. | 바꾸면 편집할 수 있는 명령을 새 인코딩으로 다시 씁니다. 새 인코딩이 나타낼 수 없는 문자는 거부되고("명령은 UTF-8 인코딩에 그대로 둡니다. 3행에 ASCII가 나타낼 수 없는 'é'가 있습니다.") 인코딩도 그대로 남습니다. 불투명한 명령은 바이트를 그대로 지니고, 새 선언 아래에서 다시 읽힐 뿐입니다. |
프린터 명령
| 조작 | 하는 일 |
|---|---|
| 편집기 | 명령을 담은 고정폭 텍스트 입력란이며 안내 문구로 ZPL 모양이 놓입니다. 입력하는 대로 확인하고(마커 목록과 거부가 글을 따라옵니다), 입력란에서 떠나면 저장합니다. 거부된 초안은 이유와 함께 화면에 남고 저장되지 않으며, 다른 템플릿을 열면 버려집니다. 보관된 바이트와 똑같은 글을 저장하면 아무것도 바뀌지 않습니다. |
| 파일 가져오기… / 파일 바꾸기… | 프린터 명령 파일을 들여옵니다(.zpl, .epl, .epl2, .cpcl, .prn, .lbl, .txt). 바이트를 설정 안으로 복사하고 추적을 위해 파일 이름을 남깁니다. 원본을 옮기거나 지워도 템플릿에는 영향이 없습니다. 빈 파일과 2 MiB를 넘는 파일은 거부되고, 마커가 어긋난 파일도 거부됩니다. |
명령이 글로 편집되는 것은 왕복이 바이트 하나까지 온전할 때뿐입니다. 선언한 인코딩으로 해석되고, 같은 바이트로 다시 인코딩되며, 모든 줄이 같은 방식으로 끝나고(전부 LF이거나 전부 CR LF이며, 가져올 때의 CR LF 방식은 저장할 때마다 되돌려 놓습니다), 탭과 줄 끝 말고는 제어 문자를 담지 않아야 합니다. 그 가운데 하나라도 통과하지 못한 명령은 불투명으로 남습니다. 편집기 자리에 이유가 들어서고("오프셋 12의 바이트 0x1B는 UTF-8 텍스트가 아닙니다.", "줄 끝이 섞여 있습니다. 어떤 줄은 CR LF로, 어떤 줄은 LF만으로 끝납니다.") 바이트는 파일을 바꿔야만 바뀝니다. 카드 아래의 한 줄이 무엇이 보관되어 있는지 말합니다. "아직 보관된 것이 없습니다.", "labels.zpl에서 가져옴 · 1.2 KiB · CR LF 줄 끝을 그대로 지킵니다", "여기에서 씀 · 240 B"입니다.
찾은 마커
보관된 명령에서 찾은 마커를 처음 나온 순서로 놓습니다. 마커는 엄격한 ASCII {{NAME}}입니다. 이름은 A에서 Z로 시작하고, A에서 Z나 0에서 9나 밑줄로 이어지며, 길이는 64자를 넘지 않고 }}로 닫힙니다. {{로 열었는데 이 문법을 따르지 않는 것은 그 바이트 오프셋과 어긴 규칙과 함께 거부됩니다("바이트 오프셋 40의 라벨 마커가 어긋났습니다. 이름에는 A-Z, 0-9, 밑줄만 쓸 수 있습니다."). 마커 밖의 모든 바이트는 그대로 지켜지고, 바꿔 넣기는 한 번만 일어나며 결코 되풀이되지 않습니다.
명령이 없는 템플릿은 "아직 명령이 없습니다. 위에 프린터 명령을 쓰거나, 라벨 디자이너에서 내보낸 파일을 가져오십시오. 그전까지 이 템플릿은 아무것도 인쇄하지 않습니다."라고 읽히고, 명령은 있고 마커가 없는 템플릿은 "마커를 찾지 못했습니다. 이 고정 라벨은 언제나 같은 바이트를 보내며 실행 데이터를 쓰지 않습니다."라고 읽히며 그것도 올바른 템플릿입니다. 서로 다른 마커마다 이 템플릿을 쓰는 모든 라벨 명령에서 신호원이 하나씩 필요하고, 같은 마커가 여러 번 나오면 같은 값을 받습니다. 카드는 상시 규칙으로 닫힙니다. Ganter Lab은 마커 문법만 검사하며, 제조사 명령은 검사하지 않습니다. 믿을 수 있는 명령만 보관하십시오. 명령이 프린터의 동작을 바꿀 수 있습니다.
라벨 디자이너에서 템플릿 준비하기
작업 흐름을 접어 둔 알림입니다.
- ZebraDesigner처럼 프린터 제조사의 도구에서 라벨 도안을 만듭니다.
{{SERIAL}}이나{{RESULT}}같은 Ganter Lab 마커를 문자나 바코드 내용 안에 넣습니다.- ZPL처럼 프린터가 바로 받는 명령 파일로 내보냅니다. 디자이너의 프로젝트 파일은 가져오지 마십시오.
- 그 파일을 여기로 가져오거나(내용을 명령 입력란에 붙여 넣어도 됩니다) 찾은 마커를 확인합니다.
- 아래에 대표 값을 넣고 설치된 Windows 대기열로 시험합니다.
EPL, CPCL을 비롯한 다른 프린터 명령 언어에도 같은 흐름이 적용됩니다.
시험 전송
| 조작 | 하는 일 |
|---|---|
| 대기열 새로 고침 | 대화형 Windows 사용자에게 설치된 프린터 대기열을 다시 읽습니다. 읽지 못하면 고르개 옆에서 그렇게 말합니다. |
| 마커마다 값 상자 하나 | 이번 전송에서만 그 마커에 바꿔 넣는 견본 글입니다. 고정 템플릿은 "이 고정 템플릿에는 견본 값이 필요하지 않습니다."라고 읽히고, 빈 템플릿은 "이 템플릿에 프린터 명령이 생기기 전에는 보낼 것이 없습니다."라고 읽힙니다. |
| 설치된 Windows 대기열 | 시험이 가는 대기열입니다("(대기열을 고르십시오)" 또는 "(설치된 대기열 없음)"). |
| 시험 보내기 | 보관된 명령을 견본 값으로 그려 Ganter Lab test · <template>라는 이름의 RAW 문서로 보냅니다. 실행도 산출물도 만들어지지 않습니다. 결과는 작업 기록 줄에 놓입니다("시험 라벨을 'Q' 대기열로 보냈습니다." 또는 "시험 전송에 실패했습니다: 이유"). |
시험 보내기는 보관된 명령이 없을 때, 고른 대기열이 없을 때, 보내는 중일 때, 그리고 페이지가 움직이지 않을 때 흐려집니다. 선언한 인코딩으로 마커가 담을 수 없는 값은 그리는 쪽이 거부합니다. 성공은 Windows 대기열이 RAW 문서를 받아들였다는 뜻이며, 실제 라벨이 인쇄되었음을 확인해 주지는 않습니다.
값이 어디에서 오는가
위의 견본 값은 시험에만 씁니다. 실행에서는 템플릿의 서로 다른 마커마다 그것을 쓰는 라벨 명령에서 유한한 신호원 하나에 이어집니다(액션). 얼어붙은 메타데이터, 모델의 이름과 개정, 유닛의 이름과 코드, 절차의 이름과 코드, 실행 식별자, 시작 시각, 실행 상태이고, 완료 시점에는 종료 시각, 소요 시간, 종합 판정, 종료 사유, 그리고 사이클을 분명히 지정한 판정 기준 결과 하나가 더해집니다. 날짜와 시각 신호원은 형식을 받고(스테이션 날짜와 시각, 스테이션 날짜, 스테이션 시각, ISO 8601), 숫자 신호원은 고정된 소수 자릿수(0에서 9)를 받을 수 있습니다. 숫자는 스테이션이 화면에 숫자를 보여 주는 방식이 아니라 그것을 읽는 기계를 위해 적힙니다. 자릿수 구분 기호는 결코 쓰지 않고(바코드 안에서 그것은 받는 시스템을 망가뜨립니다), 언제나 변하지 않는 소수점을 쓰며, 개수나 초 단위 소요 시간 같은 정수는 정수로 적습니다. 줄 바꿈을 포함한 제어 문자나 프린터 명령을 시작하는 문자(^, ~)를 담은 값은 그 마커의 이름을 대며 거부됩니다. 그런 값은 자기가 놓인 줄을 쪼개거나 다른 라벨을 인쇄하게 만들기 때문입니다. 각 경계가 무엇을 내놓는지, 산출물이 어떻게 얼어붙는지, 전송이 어떻게 기록되는지는 라벨과 보고서 내놓기이고, 기록된 실행에 손으로 템플릿을 이어 붙이는 일은 라벨과 보고서입니다.
이 페이지가 하지 않는 것
라벨의 미리 보기를 그리지 않고 프린터 언어에 대해 아무것도 검사하지 않습니다. 마커를 값에 잇지도 않습니다. 그것은 라벨 명령의 일입니다. 실행을 위한 라벨을 인쇄하지도 않습니다. 실행의 산출물은 이력에 있는 그 기록에서 인쇄합니다. 그리고 템플릿을 지워도(막대의 라벨 템플릿 삭제) 기록된 산출물은 그대로 남습니다. 그것을 아직 이름으로 부르는 명령만 만들기를 멈춥니다.