문서 자동화 · 디자인 시스템

IM 덱 엔진과 차트 스타일 킷

디자이너가 만든 투자설명서의 디자인 규칙을 실측해 코드로 옮겼습니다. 슬라이드도, 차트 문법도 코드가 조립합니다. 결과물은 편집 가능한 네이티브 PPT로 남습니다.

역할디자인 시스템 추출 · 엔진 구현
상태후속 딜에 적용 완료
핵심 기술python-pptx · OOXML 직접 조작
규모슬라이드 컴포넌트 + 차트 스타일 킷

문제

딜마다 티저와 IM을 새로 만듭니다. 디자이너에게 맡기면 며칠이 걸리고, 급할 때 직접 만들면 하우스 스타일이 무너집니다. 폰트 크기와 여백이 슬라이드마다 조금씩 달라지고, 차트는 파워포인트 기본값 그대로 남습니다.

특히 차트가 문제였습니다. 차트가 엑셀 기본값처럼 보이면 자료 전체의 신뢰가 깎입니다. 이중축에 범례가 붙고 축 눈금이 빽빽한 차트는 2010년대 문서처럼 보입니다.

접근

1. 디자인 시스템을 실측해서 코드로

잘 만들어진 IM 원본에서 타입 스케일, 팔레트, 레이아웃 그리드, 여백 규칙을 하나씩 재서 python-pptx 컴포넌트 라이브러리로 옮겼습니다. 커버·디바이더·표·키포인트를 함수로 호출하면 같은 스타일의 슬라이드가 나옵니다.

기준으로 삼은 IM 원본 — 이 레이아웃을 실측해 컴포넌트로 코드화했습니다.
기준으로 삼은 IM 원본 — 이 레이아웃을 실측해 컴포넌트로 코드화했습니다.

2. 차트 문법도 코드로

슬라이드 틀만 통일해서는 부족했습니다. 차트에도 규칙이 필요했습니다.

까다로웠던 부분 — OOXML 스키마 순서

python-pptx가 노출하지 않는 서식은 XML을 직접 건드려야 했는데, OOXML은 자식 요소의 순서가 스키마로 강제됩니다. 순서를 어기면 파워포인트가 파일 자체를 열지 못합니다. 요소를 올바른 위치에 삽입하는 헬퍼를 만들고 나서야 안정적으로 동작했습니다. 이중축 차트에서 값축을 숨기면 막대가 반대쪽 축으로 재할당되어 그래프가 깨지는 문제도 이 과정에서 발견해, 작은 차트 두 개로 분리하는 방식으로 우회했습니다.

결과

9장한 번에 리스타일한 시장분석 슬라이드
네이티브이미지가 아닌 편집 가능 PPT 차트
재사용다음 딜은 데이터만 교체

스크립트 한 번으로 덱 전체의 차트 문법이 통일됩니다. 그림으로 박아 넣은 게 아니라 네이티브 차트라서, 받는 사람이 더블클릭해 데이터를 고칠 수 있습니다.

리스타일 결과
스타일 킷 적용 후 — 축·범례를 걷어내고 색 규칙을 통일했습니다. 이중축 차트는 작은 차트 두 개로 분리했습니다.

돌아보며

디자인을 "감각"이 아니라 규칙의 집합으로 적어 내려가면 코드가 될 수 있다는 걸 확인한 작업이었습니다. 그리고 코드가 되는 순간, 다음 딜에서는 공짜가 됩니다.

남은 과제는 데이터 연결입니다. 지금은 차트 데이터를 손으로 넣는데, 스크리닝 엔진의 산출물을 그대로 덱으로 흘려보내는 게 다음 단계입니다.