문서 › 인쇄
인쇄 (브라우저·출력 프로그램·사일런트)
print() 의 세 가지 방식, 결과 값, 프린터 고르기, 브라우저 인쇄 창 설정.
print(template, rows, options) 하나로 인쇄합니다. template 은 서식 객체 또는 서식 ID('lbl_…')입니다.
const r = await Label82.print(template, rows, {
mode: 'auto', // 'auto' | 'agent' | 'browser'
printer: 'TSC TE210', // 출력 프로그램의 프린터 이름 (빼면 기본 프린터)
copies: 1, // 행마다 몇 장
startAt: 1, // 시트: 몇 번째 칸부터
frames: true, // false: layer 'frame' 요소를 빼고 인쇄
});세 가지 방식
| mode | 동작 |
|---|---|
auto (기본) | PC 에 출력 프로그램이 켜져 있고 구독 계정에 연결돼 있으면 출력 프로그램으로 바로(사일런트). 아니면 브라우저 인쇄 창. |
agent | 출력 프로그램으로만. 없거나 연결이 안 됐으면 AgentError 를 던집니다(브라우저로 넘어가지 않음). |
browser | 항상 브라우저 인쇄 창. 출력 프로그램을 찾지 않습니다. |
사일런트 인쇄
출력 프로그램 경로에서는 인쇄 창이 뜨지 않습니다. 라이브러리가 라벨을 프린터 해상도(dpi)의 PNG 로 만들어 PC 의 출력 프로그램(http://127.0.0.1:18282)에 보내고, 출력 프로그램이 Windows 프린터 드라이버로 용지 크기 그대로(여백 0, 배율 100%) 찍습니다.
- 처음 보는 사이트에서 요청이 오면 출력 프로그램이 "이 사이트의 출력을 허용할까요?" 를 묻습니다. 그동안
print()는 아무것도 찍지 않고status: 'pending_permission'을 돌려줍니다. 허용한 뒤 다시 누르면 바로 나갑니다. - 출력 프로그램은 켜져 있지만 구독 계정에 연결되지 않았으면 브라우저로 인쇄하고
notice: 'agent_license_required'를 붙입니다. - 출력 프로그램이 없으면 0.4초 안에 판단하고 브라우저로 넘어갑니다.
결과
{
via: 'agent' | 'browser',
printed: 2, // 보낸 라벨 수 (copies 포함)
status: 'done' | 'pending_permission' | 'cancelled',
errors: [], // 바코드 값 오류, 글자 넘침 등 (인쇄는 계속됨)
notice: 'agent_license_required', // 있을 때만
}const r = await Label82.print(template, rows);
if (r.status === 'pending_permission') showToast('출력 프로그램 창에서 이 사이트를 허용해 주세요.');
else if (r.notice === 'agent_license_required') showToast('바로 인쇄하려면 출력 프로그램을 계정에 연결하세요.');
if (r.errors.length) console.warn(r.errors);프린터 목록
const list = await Label82.printers(); // 출력 프로그램이 없으면 null
// [{ name: 'TSC TE210', isDefault: true, dpi: 203 }, { name: 'Canon G3010', isDefault: false }]
const status = await Label82.agentStatus(); // { version, allowed, licensed } 또는 null브라우저 인쇄 창 설정
- 배율: 100%(실제 크기). "용지에 맞춤"은 끄세요.
- 여백: 없음. 82label 이
@page { size: 가로mm 세로mm; margin: 0 }을 넣습니다. - 머리글·바닥글(날짜, 주소)은 끄세요. 크롬은 여백이 없으면 저절로 빠집니다.
- 롤 라벨프린터라면 프린터의 용지 크기를 라벨 크기로 고릅니다.