cli-anything-wps은(는) 무엇을 하나요?
COM 자동화 인터페이스를 통해 WPS Office를 제어하는 명령줄 도구입니다. WPS 문서(Writer), WPS 표(Calc), WPS 프리젠테이션(Impress)을 지원합니다.
전제 조건
- Windows 운영체제
- WPS Office (설치됨, 버전 12.0+)
- Python 3.10+
- pywin32:
pip install pywin32
설치
pip install -e .
cli-anything-wps --help
JSON 데이터 기반 PPT 자동 생성 ⭐ 핵심 프로덕션 워크플로우
가장 많이 사용되는 패턴입니다: 데이터 수집 → matplotlib 차트 생성 → JSON 작성 → WPS COM으로 한 번에 생성.
전체 프로세스 (6단계)
1. 템플릿 배경 추출: 템플릿.pptx → template_bg.png (960x540)
2. WebSearch 데이터 검색: 입학 점수/학과 순위/입학 계획/연구 데이터
3. matplotlib 차트 생성: 막대 그래프/원형 그래프/꺾은선 그래프/가로 막대/버블 차트
4. data.json 작성: 12-15페이지 elements[] 편성 (제목 ≤4자 + 간격 ≥24pt)
5. python build_xxx.py: WPS COM으로 페이지별 구축
6. 출력: PPTX + PDF 이중 형식
표준 페이지 순서
S1 커버 → S2 목차 → S3-S10 콘텐츠 페이지(그림+표+카드) → S11 요약 카드 → S12 감사
요소 타입 라우팅
| type | 용도 |
|---|
text | 텍스트 상자 |
image | 이미지(matplotlib 차트 포함) |
table | 표 |
cards_2x3 | 2행x3열 컬러 카드 |
cards_1x4_info | 4열 숫자 통계 카드 |
card_list_wide | 목차 번호 목록 |
tagline_bar | 페이지 하단 요약 막대 |
주요 제약 사항 ⚠️
- 제목과 콘텐츠 간격: 제목 y=14 h=40(y≈54에서 끝남), 첫 번째 콘텐츠 요소는 반드시 y≥76-78에서 시작(≥24pt 간격)
- 제목 최대 4자, 중앙 정렬, SimHei 40-44pt, 브랜드 색상, 장식선 없음
- JSON에서 인용 부호: 텍스트 내 인용은 「」를 사용하여
"" 대체
- 모든 요소가 캔버스 내에 위치: 960×540, y+h≤518
- WPS COM:
Fill.ForeColor.RGB, SaveAs(path, 32)로 PDF 내보내기
- 실행 전 정리:
taskkill //F //IM wps.exe //T
참고 예제
WPS/ 디렉토리 아래 16개 프로젝트:
| 프로젝트 | 페이지 수 | 주제 |
|---|
| 칭화대/협화/란저우대/동지의대/하얼빈공대/충칭대/난화대 | 12페이지 | 각 대학 입시 |
| 중산대/중국과기대/중국과학원대 | 15페이지 | 명문대 입시 |
| 푸단대 | 12페이지 | 신공과+의대 |
| 난방과기대 종양병원 | 12페이지 | 연합 석박사 과정 |
| 베이징대/칭화대/난방과기대/화중과기대/저장대 도시대학 | 9-14페이지 | 각 대학 소개 |
python -c "import zipfile; ..."
python gen_charts.py
python -c "import json; json.load(open('data.json','r',encoding='utf-8'))"
taskkill //F //IM wps.exe //T
python build_xxx.py
CLI 명령 구조
wps
├── document # 문서 관리: new/open/save/info
├── writer # 문서 편집: add-paragraph/heading/list/table/image
├── calc # 표 편집: set-cell/get-cell/set-range/merge-cells
├── impress # 프리젠테이션: add-slide/remove-slide/set-content/add-element
├── style # 스타일: create/modify/list/apply/remove
├── preset # 디자인 프리셋: list/info/apply
├── export # 내보내기: render output.pptx -p pptx
└── session # 세션: status/undo/redo/history
사용 예시
cli-anything-wps document new --type writer --name "보고서" -o report.json
cli-anything-wps --project report.json writer add-heading -t "연례 보고서" -l 1
cli-anything-wps --project report.json export render report.docx -p docx
cli-anything-wps --json document new --type writer --name "test"
디자인 프리셋
| 프리셋 | 색상 구성 | 사용 시나리오 |
|---|
| academic | 진한 파랑 #1A3C8B | 학술 발표/연구비 신청 |
| consultant | 진한 파랑 #003366+밝은 청록 | 컨설팅 보고서 |
| business | 비즈니스 블루 #005294 | 회의 보고서/강의 자료 |
| tech | 거의 검정 #0F1423 | 기술/AI/데이터 보고서 |
품질 검토 (5개 차원)
| 차원 | 검사 항목 | 임계값 |
|---|
| visual | 글꼴 계층/대비/여백 | 70점 |
| pedagogy | 스토리텔링 아크/사전 지식 | 75점 |
| proofreading | 맞춤법/용어/오버플로 | 80점 |
| parity | PPTX/PDF 일관성 | 85점 |
| substance | 데이터 정확성/참조 | 90점 |