인쇄용 QR을 실패 없이 만드는 법: 인코딩·오류 복원·여백
화면 생성 성공과 실제 인쇄 스캔 성공을 분리해 인코딩, L/M/Q/H 복원 수준, 4모듈 여백을 검증합니다.
마지막 검토: 2026년 8월 25일 · 로직 버전 20260724-1 · QR 자산 버전 20260722-1
PROBLEM
왜 이 구분이 필요한가
QR이 화면에 그려졌다는 사실은 인쇄물에서 읽힌다는 뜻이 아닙니다. 모듈이 너무 작거나 바깥 여백이 잘리고, 코팅 반사가 심하거나 전경·배경 대비가 낮으면 스캔이 실패합니다. 오류 복원 수준을 높이면 일부 손상에는 강해지지만 같은 데이터의 모듈 수와 복잡도가 늘어납니다. 현재 인코딩 경계 때문에 한글·이모지는 별도 실제 기기 검증 없이는 성공을 약속할 수 없습니다.
PROCEDURE
실무 적용 순서
먼저 가능한 한 짧은 ASCII HTTPS URL을 준비하고 브라우저에서 실제로 열리는지 직접 확인합니다. 일반 인쇄는 M으로 시작하고 320px PNG를 생성합니다. QR 주변 4모듈 quiet zone을 자르지 않은 채 원본 비율로 배치합니다. 최종 크기와 종이, 코팅, 조명을 적용한 시험 인쇄를 만들어 가까운 거리와 예상 사용 거리에서 서로 다른 두 종류 이상의 휴대전화로 스캔합니다. 손상 가능성이 크면 Q나 H를 시험하되 코드가 조밀해지는 영향도 함께 봅니다.
BASIS
계산과 검증 근거
도구는 qrcode-generator 2.0.4 계열을 로컬에서 사용하고 L, M, Q, H 오류 복원 수준을 지원합니다. Canvas에 검은 모듈과 4모듈 바깥 여백을 그려 PNG로 내보냅니다. 기본 byte 경로가 charCodeAt 값의 하위 8비트만 사용하므로 UTF-8 다중 바이트 문자를 정확히 표현한다고 간주할 수 없습니다. 라이브러리 자산은 MIT 라이선스 고지를 포함합니다.
LIMITS
지원 범위와 한계
입력은 JavaScript 문자열 길이 1,200자로 제한됩니다. URL 유효성과 접속 가능성을 검사하지 않고 정적 QR의 목적지를 나중에 바꿀 수도 없습니다. 스캔 성공은 프린터 해상도, 물리 크기, 거리, 렌즈, 조명에 좌우됩니다. UTF-8 경로가 수정·검증되기 전에는 한글과 이모지 성공 사례를 확정적으로 게시하지 않습니다.
WORKED EXAMPLES
직접 재현할 예제
인쇄용 기본안
- 입력
- https://tools.oneul-ailab.com/date/ · M · 320px
- 결과
- 320×320 PNG와 4모듈 quiet zone
인쇄 후 실제 URL과 스캔 거리를 확인합니다.
복원 수준 선택
- 입력
- L / M / Q / H
- 결과
- 복원 여유가 커질수록 일반적으로 코드가 더 복잡해짐
L은 깨끗한 환경, M은 일반 용도, Q/H는 손상 가능성이 큰 환경에서 시험합니다.
여백 잘림
- 입력
- QR 경계까지 배경 그래픽 배치
- 결과
- finder pattern 인식 실패 가능성 증가
최소 4모듈 quiet zone을 다른 요소로 침범하지 않습니다.
한글 입력
- 입력
- 한글 또는 이모지
- 결과
- 현재 성공 보장 안 함
기본 byte 인코딩 경계를 수정하고 실제 스캐너로 검증하기 전에는 ASCII를 사용합니다.
FAQ
자주 묻는 질문
도구가 URL이 실제로 열리는지 검사하나요?
아니요. 문자열을 QR로 만들 뿐이므로 생성 전후에 주소를 직접 열어 확인해야 합니다.
인쇄 후 목적지 주소를 바꿀 수 있나요?
정적 QR 안의 문자열은 바뀌지 않습니다. 변경 가능한 리디렉션 주소를 직접 운영하는 경우만 간접 변경이 가능합니다.
한글 QR은 항상 읽히나요?
현재 기본 byte 인코딩 경계 때문에 보장하지 않습니다. UTF-8 수정과 실제 스캔 검증이 먼저 필요합니다.
오류 복원 수준은 높을수록 좋은가요?
손상 여유는 늘지만 코드가 조밀해질 수 있어 작은 인쇄물에서는 오히려 읽기 어려울 수 있습니다.
SOURCES