콘텐츠로 이동

VDP 가이드

VDP(Variable Data Printing)는 하나의 디자인 템플릿에 가변 데이터를 주입해 동적으로 최종 출력물을 만드는 기능입니다. 명함, 청첩장처럼 레이아웃은 같고 내용만 다른 대량 인쇄에 사용합니다.

연동은 두 지점에서 일어납니다.

  1. 미리보기(브라우저) — SDK의 set_variable_data_row로 TnView 썸네일을 갱신
  2. 주문/렌더링(서버)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": "절대지존" }
] }
]
}

데이터 머지 방식으로 변수를 만든 경우입니다. 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 테스트 주문 여부
  1. 템플릿을 어노테이션 또는 Data Merge 변수로 제작·등록
  2. (브라우저) open_tnviewset_variable_data_row로 행별 미리보기
  3. (서버) tentative_with_vdp로 가변 데이터 포함 주문
  4. definitive 확정 → 렌더링 파이프라인으로 각 행이 개별 출력물로 생성