---
name: printing-foundation
description: |
  인쇄 산업 공통 기술 지식 베이스. 조판 계산, CTP 판수, 접지 배열, 책등/오시, 크립 보정 등 인쇄 기초 지식 제공.
  
  🔹 조판 계산: "UP수 계산", "판걸이", "조판 효율", "자투리 배치"
  🔹 CTP 계산: "CTP 몇 판?", "판수 계산", "Work&Turn"
  🔹 접지 배열: "십자접지", "3단접지", "페이지 순서", "대지"
  🔹 책등/오시: "책등 두께", "오시 줄 수", "표지 펼침 크기"
  🔹 크립 보정: "크립 계산", "중철 보정"
  🔹 용지 규격: "국전", "46전", "롤 폭", "인쇄 영역"
  
  사용 시점: 인쇄 견적/생산 시스템 개발, 조판 최적화, 제본 계산 필요 시
  확장 스킬: huni-printing-estimator, mycom-printing-estimator에서 참조
---

# 인쇄 기반 지식 (Printing Foundation)

인쇄 산업 공통 기술 지식. 회사별 가격/정산은 개별 스킬에서 관리.

---

## 1. 용지 규격

### 전지 규격 (옵셋)

| 규격 | 용지(mm) | 인쇄영역(mm) | 1R | CTP |
|------|----------|-------------|-----|-----|
| 대국전 | 1020×720 | 1000×700 | 500매 | 1300 |
| 국전 | 939×636 | 919×616 | 500매 | 1300 |
| 국전횡 | 636×939 | 616×919 | 500매 | 1300 |
| 46전 | 788×1091 | 768×1071 | 500매 | 1300 |
| 46전횡 | 1091×788 | 1071×768 | 500매 | 1300 |
| 국2절 | 636×468 | 616×448 | 500매 | 730 |
| 국4절 | 469×318 | 449×298 | 1000매 | 730 |

### 롤 규격 (디지털)

| 외주사 | 폭 | 길이 | 여백 |
|--------|-----|------|------|
| 스티키랩 | 330mm | 5m | 1.5mm |
| 애즈랜드 | 487mm | 2m | 1.5mm |
| 로터리 | 156mm | 연속 | 2.0mm |

상세: `data/paper-formats.json`

---

## 2. 조판 계산

### 2.1 조판 3분류

| 유형 | 적용 | 알고리즘 |
|-----|------|---------|
| **규격** | 표준 판형 (A4, A5) | 단순 그리드 |
| **비규격** | 커스텀 사이즈 | 모든 용지 비교 |
| **비정형** | 자유형 칼선 | NFP + GA |

### 2.2 UP수 계산 공식

```python
# 편집 사이즈 (도련 포함)
edit_w = product_w + bleed * 2  # 보통 3mm
edit_h = product_h + bleed * 2

# 정배치 vs 회전배치
up1 = (print_w // edit_w) * (print_h // edit_h)
up2 = (print_w // edit_h) * (print_h // edit_w)
best_up = max(up1, up2)
```

### 2.3 자투리 배치 원칙

```
⚠️ 핵심: 자투리도 동일한 완성물 크기로 배치!
⚠️ 완성물 크기는 절대 불변!

처리 방식:
• 90° 회전 배치 (가장 일반적)
• 추가 배치 없음 (효율 차이 적을 때)
• 다품종 합대 (소량 다품종)
```

스크립트: `scripts/imposition_calc.py`

---

## 3. CTP 판수 계산

### 기본 공식

```python
CTP = 대지수 × 색상수 × 인쇄면수

대지수 = ceil(총페이지 / 대지당페이지)
색상수 = 1(먹), 4(CMYK), +N(별색)
인쇄면수 = 2(Sheetwise), 1(Work&Turn)
```

### 인쇄 방식

| 방식 | 판수 | 조건 |
|-----|------|-----|
| Sheetwise | ×2 | 앞뒤 별도 인쇄 |
| Work&Turn | ×1 | 좌우 뒤집기, 50% 절감 |
| Work&Tumble | ×1 | 상하 뒤집기 |

### 예시: 100P 무선, 4도양면

```
내지: ceil(100/16) × 4 × 2 = 7 × 4 × 2 = 56판
표지: 1 × 4 × 2 = 8판
총합: 64판
```

스크립트: `scripts/ctp_calc.py`

---

## 4. 접지 및 페이지 배열

### 4.1 대지 크기

| 대지 | 페이지 | 접지 | 용도 |
|-----|-------|-----|-----|
| 4P | 4 | 1회 | 리플렛 |
| 8P | 8 | 2회 | 소형책자 |
| 16P | 16 | 3회 | 표준책자 |
| 32P | 32 | 4회 | 대형책자 |

### 4.2 십자접지 16P 배열

```
규칙: 마주보는 페이지 합 = 17

앞면:
┌────┬────┬────┬────┐
│  4 │ 13 │ 16 │  1 │
├────┼────┼────┼────┤
│  5 │ 12 │  9 │  8 │
└────┴────┴────┴────┘

뒷면:
┌────┬────┬────┬────┐
│  6 │ 11 │ 14 │  3 │
├────┼────┼────┼────┤
│  7 │ 10 │ 15 │  2 │
└────┴────┴────┴────┘
```

### 4.3 롤접지 주의사항

```
⚠️ 안쪽 패널 크기 감소 필수 (2~3mm씩)
예: 76mm → 74mm → 72mm → 70mm
```

상세: `references/page-layouts.md`

---

## 5. 책등 및 오시 계산

### 5.1 책등 두께

```python
책등(mm) = (페이지수 / 2) × 용지두께(mm)
```

### 5.2 용지 두께 참조

| 용지 | 평량 | 두께 |
|-----|------|------|
| 모조 | 80g | 0.10mm |
| 아트 | 120g | 0.10mm |
| 스노우 | 120g | 0.11mm |
| 랑데뷰 | 120g | 0.15mm |

상세: `data/paper-thickness.json`

### 5.3 오시 줄 수

| 제본 | 오시 | 구성 |
|-----|------|-----|
| 무선(날개X) | 4줄 | 책등2 + 힌지2 |
| 무선(날개O) | 6줄 | 책등2 + 힌지2 + 날개2 |
| 중철 | 0줄 | 접지만 |

### 5.4 힌지 간격

| 표지 평량 | 간격 |
|----------|------|
| ~250g | 6mm |
| 250~300g | 8mm |
| 300g+ | 10mm |

### 5.5 표지 펼침 크기

```python
# 날개 없음
가로 = 도련 + 너비 + 책등 + 너비 + 도련
세로 = 도련 + 높이 + 도련

# 날개 있음
가로 = 날개 + 도련 + 너비 + 책등 + 너비 + 도련 + 날개
```

스크립트: `scripts/spine_calc.py`

---

## 6. 크립(Creep) 보정

### 적용 조건

- 중철제본 40P 이상 → **필수**
- 중철 24~36P → 권장
- 무선제본 → 불필요

### 계산 공식

```python
총_크립(mm) = (페이지수 / 4 - 1) × 용지두께
```

### 예시: 48P 중철, 80g

```
총 크립 = (48/4 - 1) × 0.10 = 11 × 0.10 = 1.1mm

스프레드 1 (바깥): 0.00mm
스프레드 6 (중간): 0.50mm
스프레드 12 (안쪽): 1.10mm
```

---

## 7. 효율 계산

```python
용지_효율(%) = (사용면적 / 전체면적) × 100
생산_효율(%) = max(0, 100 - 대수 × 5)
종합_점수 = 용지효율 × 0.7 + 생산효율 × 0.3
```

---

## 8. 비정형 조판 (네스팅)

### 알고리즘 분류

| 유형 | 대상 | 복잡도 |
|-----|------|-------|
| 1D Cutting | 롤 길이 | O(n log n) |
| 2D Bin Packing | 낱장 판형 | O(n²) |
| 2D Irregular | 비정형 칼선 | NP-hard |

### 오픈소스

| 라이브러리 | 언어 | 용도 |
|-----------|------|-----|
| rectpack | Python | 사각형 |
| SVGnest | JS | 비정형 웹 |
| libnest2d | C++ | 산업용 |

상세: `references/nesting-algorithms.md`

---

## 9. 파일 규격

### 체크리스트

```
□ CMYK 색상모드
□ 300dpi 해상도
□ 도련 3mm (옵셋), 1.5mm (디지털)
□ 안전영역 3mm
□ 서체 아웃라인
□ PDF/X-1a
```

### 후가공 파일

```
박가공: K100% 또는 별색 레이어
칼선: CutContour 스팟컬러, 0.25pt
```

---

## 파일 구조

```
printing-foundation/
├── SKILL.md              # 이 문서
├── data/
│   ├── paper-formats.json    # 용지 규격
│   └── paper-thickness.json  # 용지 두께
├── scripts/
│   ├── imposition_calc.py    # 조판 계산
│   ├── ctp_calc.py           # CTP 판수
│   └── spine_calc.py         # 책등/오시/크립
└── references/
    ├── page-layouts.md       # 접지별 배열
    └── nesting-algorithms.md # 네스팅 상세
```

---

## 스크립트 사용법

```bash
# 조판 계산
python scripts/imposition_calc.py --width 210 --height 297 --bleed 3

# CTP 판수
python scripts/ctp_calc.py --pages 100 --signature 16 --colors 4

# 책등/오시
python scripts/spine_calc.py --pages 200 --paper 80g --binding 무선
```
