# PDF Template Skill

PDF 문서의 구조와 디자인을 분석하여 동일한 형태의 PPTX 템플릿을 생성하는 기술입니다.

## 📋 기능 개요

### 핵심 기능
- **PDF 구조 분석**: 레이아웃, 폰트, 색상, 위치 정보 추출
- **템플릿 생성**: PDF와 동일한 형태의 PPTX 템플릿 제작
- **내용 교체**: 기존 내용을 새로운 데이터로 자동 교체
- **형태 보존**: 원본 PDF의 디자인과 레이아웃 완벽 유지

### 지원 기능
- 다중 슬라이드 템플릿 추출
- 테이블 구조 인식 및 재생성
- 이미지 및 로고 영역 매핑
- 폰트 및 색상 스타일 보존

## 🚀 사용법

### 1. PDF 템플릿 분석
```bash
node .claude/skills/pdf-template-skill/scripts/analyze-template.js \
  --input pdf_sample/sample.pdf \
  --output templates/sample_template.json
```

### 2. 내용 교체로 PPTX 생성
```bash
node .claude/skills/pdf-template-skill/scripts/generate-from-template.js \
  --template templates/sample_template.json \
  --data project_data.json \
  --output result.pptx
```

### 3. 통합 실행
```bash
npm run template-extract    # PDF → 템플릿 추출
npm run template-generate   # 템플릿 → PPTX 생성
```

## 📊 템플릿 구조

### Template JSON Format
```json
{
  "metadata": {
    "source": "sample.pdf",
    "pages": 5,
    "extractedAt": "2025-01-03",
    "title": "SAM ERP 견적서"
  },
  "slides": [
    {
      "slideNumber": 1,
      "type": "cover",
      "layout": {
        "width": 10,
        "height": 7.5
      },
      "elements": [
        {
          "type": "text",
          "id": "title",
          "position": { "x": 1, "y": 3, "w": 8, "h": 1.5 },
          "style": {
            "fontSize": 36,
            "bold": true,
            "color": "0066CC",
            "align": "center"
          },
          "placeholder": "{{title}}",
          "defaultValue": "견적서"
        }
      ]
    }
  ],
  "styles": {
    "colors": {
      "primary": "0066CC",
      "secondary": "333333",
      "accent": "00AA00"
    },
    "fonts": {
      "title": { "face": "Arial", "size": 24, "bold": true },
      "body": { "face": "Arial", "size": 12 }
    }
  },
  "variables": {
    "title": "string",
    "company": "string",
    "date": "date",
    "items": "array"
  }
}
```

### Data Input Format
```json
{
  "title": "스마트 재고 관리 시스템",
  "company": "(주) 테크솔루션",
  "date": "2025-01-03",
  "client": {
    "name": "고객사명",
    "site": "프로젝트명",
    "address": "주소"
  },
  "items": [
    {
      "name": "상품명",
      "quantity": 1,
      "price": 1000000,
      "description": "상세 설명"
    }
  ]
}
```

## 🔧 고급 기능

### 1. 동적 테이블 생성
```javascript
// 테이블 구조 정의
{
  "type": "table",
  "id": "itemsTable",
  "template": {
    "headers": ["번호", "품명", "수량", "단가", "금액"],
    "rowTemplate": "{{index}}, {{name}}, {{quantity}}, {{price}}, {{total}}",
    "dataSource": "items"
  }
}
```

### 2. 조건부 콘텐츠
```javascript
// 조건부 표시
{
  "type": "conditional",
  "condition": "items.length > 10",
  "ifTrue": { /* 대용량 테이블 레이아웃 */ },
  "ifFalse": { /* 기본 테이블 레이아웃 */ }
}
```

### 3. 계산 필드
```javascript
// 자동 계산
{
  "type": "calculated",
  "formula": "SUM(items.price * items.quantity)",
  "format": "currency"
}
```

## 📋 워크플로우

### Phase 1: PDF 분석
1. **페이지 분할**: PDF를 개별 페이지로 분리
2. **요소 인식**: 텍스트, 이미지, 테이블, 도형 위치 추출
3. **스타일 분석**: 폰트, 색상, 크기 정보 수집
4. **구조 매핑**: 논리적 구조와 시각적 배치 연결

### Phase 2: 템플릿 생성
1. **변수 식별**: 교체 가능한 콘텐츠 영역 표시
2. **레이아웃 정의**: 고정 요소와 가변 요소 분리
3. **스타일 시트**: 일관된 디자인 규칙 정의
4. **검증**: 생성된 템플릿의 정확성 확인

### Phase 3: 콘텐츠 적용
1. **데이터 바인딩**: JSON 데이터를 템플릿 변수에 매핑
2. **PPTX 생성**: PptxGenJS를 사용한 슬라이드 생성
3. **스타일 적용**: 원본과 동일한 디자인 재현
4. **품질 검증**: 생성된 PPTX의 형태 확인

## 🎯 적용 사례

### 1. 견적서 시스템
- **템플릿**: SAM ERP 견적서 PDF
- **변수**: 고객정보, 상품목록, 금액계산
- **결과**: 동일한 형태의 견적서 PPTX

### 2. 기획서 시스템
- **템플릿**: 표준 기획서 PDF
- **변수**: 프로젝트 정보, 기능 명세, 일정
- **결과**: 일관된 형태의 기획서 PPTX

### 3. 보고서 시스템
- **템플릿**: 월간 보고서 PDF
- **변수**: 실적 데이터, 차트, 분석 내용
- **결과**: 표준화된 보고서 PPTX

## 🔮 확장 계획

### Short-term
- [ ] 더 정교한 테이블 구조 인식
- [ ] 차트 및 그래프 템플릿 지원
- [ ] 다국어 템플릿 처리

### Long-term
- [ ] AI 기반 레이아웃 최적화
- [ ] 실시간 템플릿 편집기
- [ ] 클라우드 템플릿 저장소

## 📚 참고 자료

- PptxGenJS Documentation
- PDF.js Parser Reference
- Template Engine Best Practices
- Design Pattern Guidelines