VDP 가이드
VDP(Variable Data Printing)는 하나의 디자인 템플릿에 가변 데이터를 주입해 동적으로 최종 출력물을 만드는 기능입니다. 명함, 청첩장처럼 레이아웃은 같고 내용만 다른 대량 인쇄에 사용합니다.
연동은 두 지점에서 일어납니다.
- 미리보기(브라우저) — SDK의
set_variable_data_row로 TnView 썸네일을 갱신 - 주문/렌더링(서버) —
tentative_with_vdp로 가변 데이터를 포함해 주문
데이터 구조
섹션 제목: “데이터 구조”VDP 데이터는 행(row) = 1개의 출력물(print), 열(col) = 1개의 변수로 구성됩니다.
interface VariableDataSet { rows: VariableDataRow[]; }interface VariableDataRow { cols: VariableData[]; }interface VariableData { id: string; value: { text: string }; }템플릿 변수 방식: 어노테이션 vs Data Merge
섹션 제목: “템플릿 변수 방식: 어노테이션 vs Data Merge”가변 데이터 포맷은 인디자인 템플릿을 만든 방식에 따라 달라집니다.
어노테이션 방식
섹션 제목: “어노테이션 방식”디자인 템플릿 생성 시 어노테이션(annotation)으로 변수를 만든 경우입니다.
{ "rows": [ { "cols": [ { "id": "name", "value": "전 지 현" }, { "id": "title-role", "value": "최강미모" } ] }, { "cols": [ { "id": "name", "value": "송 혜 교" }, { "id": "title-role", "value": "절대지존" } ] } ]}Data Merge 방식
섹션 제목: “Data Merge 방식”데이터 머지 방식으로 변수를 만든 경우입니다. segment, shrink 등의 옵션을 사용할 수 있습니다.
{ "rows": [ { "cols": [ { "id": "name", "segment": true, "shrink": true, "value": { "text": "홍길동" } } ] } ]}shrink는 글상자 폭에 맞춰 장평을 조정합니다(주의사항).
서버 주문에 가변 데이터 포함
섹션 제목: “서버 주문에 가변 데이터 포함”가변 데이터 포함 주문
섹션 제목: “가변 데이터 포함 주문” POST
/api/projects/:prjid/order/tentative_with_vdp vdp_dataset 또는 vdp_dataset_file을 가진 주문은 이 API를 사용합니다. 나머지 사용법은 일반 Tentative Order와 같습니다.
| body | 타입 | 설명 |
|---|---|---|
order_count * | number | 주문 수량 |
total_price * | number | 실 결제 금액 |
vdp_dataset | string | JSON string. 직접 보낼 때(크기 제한 있음) |
vdp_dataset_file | File | Blob | JSON 포맷 파일. 대량 데이터일 때 |
order_for_test | boolean | 테스트 주문 여부 |
전체 흐름 요약
섹션 제목: “전체 흐름 요약”- 템플릿을 어노테이션 또는 Data Merge 변수로 제작·등록
- (브라우저)
open_tnview→set_variable_data_row로 행별 미리보기 - (서버)
tentative_with_vdp로 가변 데이터 포함 주문 definitive확정 → 렌더링 파이프라인으로 각 행이 개별 출력물로 생성