# 슬라이드 데이터 구조

- Human documentation: [https://docs.univer.ai/ko-KR/guides/slides/model/slide-data](https://docs.univer.ai/ko-KR/guides/slides/model/slide-data)

- Agent Markdown: [https://docs.univer.ai/ko-KR/guides/slides/model/slide-data.md](https://docs.univer.ai/ko-KR/guides/slides/model/slide-data.md)

- Requested language: `ko-KR`

- Content language: `ko-KR`

- Documentation version: `1.0.4`

- Source: [slides/model/slide-data.ko-KR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/model/slide-data.ko-KR.mdx)

---

## ISlideData

`ISlideData`는 하나의 Univer Slides 프레젠테이션을 영속화하는 스냅샷입니다. 프레젠테이션 메타데이터, 순서가 있는 슬라이드 모음, 선택적 마스터 및 레이아웃 계층, 전환, 테마, 리소스를 저장합니다.

### 필수 속성

| 속성                | 타입                           | 설명                                  |
| ----------------- | ---------------------------- | ----------------------------------- |
| `id`              | `string`                     | 프레젠테이션 유닛의 고유 ID입니다.                |
| `name`            | `string`                     | 프레젠테이션 표시 이름입니다.                    |
| `defaultPageSize` | `ISlidePageSize`             | 페이지에 자체 크기가 없을 때 사용하는 기본 너비와 높이입니다. |
| `slideOrder`      | `string[]`                   | 프레젠테이션 순서로 나열한 슬라이드 ID입니다.          |
| `slides`          | `Record<string, ISlidePage>` | 슬라이드 ID를 키로 사용하는 일반 슬라이드입니다.        |

### 선택 속성

| 속성                        | 타입                                        | 설명                             |
| ------------------------- | ----------------------------------------- | ------------------------------ |
| `rev?`                    | `number`                                  | 스냅샷 리비전입니다.                    |
| `appVersion?`             | `string`                                  | 스냅샷을 생성한 Univer 버전입니다.         |
| `locale?`                 | `LocaleType`                              | 프레젠테이션 로케일입니다.                 |
| `masterPageOrder?`        | `string[]`                                | 저장 순서로 나열한 마스터 페이지 ID입니다.      |
| `masterPages?`            | `Record<string, ISlideMasterPage>`        | ID를 키로 사용하는 마스터 페이지입니다.        |
| `layoutPageOrder?`        | `string[]`                                | 저장 순서로 나열한 레이아웃 페이지 ID입니다.     |
| `layoutPages?`            | `Record<string, ISlideLayoutPage>`        | ID를 키로 사용하는 레이아웃 페이지입니다.       |
| `handoutMasterPageOrder?` | `string[]`                                | 저장 순서로 나열한 유인물 마스터 ID입니다.      |
| `handoutMasterPages?`     | `Record<string, ISlideHandoutMasterPage>` | ID를 키로 사용하는 유인물 마스터입니다.        |
| `notesMasterPageOrder?`   | `string[]`                                | 저장 순서로 나열한 노트 마스터 ID입니다.       |
| `notesMasterPages?`       | `Record<string, ISlideNotesMasterPage>`   | ID를 키로 사용하는 노트 마스터입니다.         |
| `activeSlideId?`          | `string`                                  | 활성 슬라이드 ID입니다.                 |
| `transitionRecords?`      | `Record<string, ISlideTransition>`        | 전환 ID를 키로 사용하는 재사용 가능한 전환입니다.  |
| `slideTransitionRefs?`    | `Record<string, string>`                  | 슬라이드 ID와 전환 ID의 매핑입니다.         |
| `theme?`                  | `ISlideThemeData`                         | 프레젠테이션 기본 테마입니다.               |
| `themes?`                 | `Record<string, ISlideThemeData>`         | 테마 ID를 키로 사용하는 추가 테마입니다.       |
| `zoomRatio?`              | `number`                                  | 영속화되는 프레젠테이션 확대 비율입니다.         |
| `resources?`              | `IResources`                              | Slides 및 기능 플러그인이 제공하는 리소스입니다. |
| `custom?`                 | `SlideCustomData`                         | 애플리케이션 정의 프레젠테이션 메타데이터입니다.     |

### 순서가 있는 페이지 레코드

`slideOrder`의 각 ID는 `slides`의 항목과 일치해야 합니다. 선택적 마스터, 레이아웃, 유인물 마스터, 노트 마스터 계층도 순서 배열과 ID 기반 레코드의 같은 패턴을 사용합니다. `activeSlideId`가 있으면 `slides`의 항목과 일치해야 합니다.

```typescript
import type { ISlideData } from '@univerjs-pro/slides'
import { PageTypeEnum } from '@univerjs-pro/slides'

const slideData: ISlideData = {
  id: 'deck-1',
  name: '제품 로드맵',
  defaultPageSize: { width: 960, height: 540 },
  slideOrder: ['slide-1'],
  slides: {
    'slide-1': {
      id: 'slide-1',
      name: '시작',
      pageType: PageTypeEnum.Slide,
      elementOrder: [],
      elements: {},
    },
  },
  activeSlideId: 'slide-1',
}
```

### 사용 방법

`univerAPI.createPresentation(slideData)`에 스냅샷을 전달해 프레젠테이션을 복원할 수 있습니다. 영속화, 내보내기, 인쇄 또는 서버 측 처리에 사용할 현재 `ISlideData`는 `presentation.save()`로 가져옵니다.

> [!WARNING: 주의]
> 스냅샷은 영속화 데이터이며 실행 중인 `SlideModel`이 아닙니다. 프레젠테이션이 시작된 뒤에는 스냅샷 객체를 직접 변경하지 말고 Slides Facade 메서드나 등록된 명령을 사용하세요.
