# Web Workers

- Human documentation: [https://docs.univer.ai/ko-KR/guides/pdfs/getting-started/worker](https://docs.univer.ai/ko-KR/guides/pdfs/getting-started/worker)

- Agent Markdown: [https://docs.univer.ai/ko-KR/guides/pdfs/getting-started/worker.md](https://docs.univer.ai/ko-KR/guides/pdfs/getting-started/worker.md)

- Requested language: `ko-KR`

- Content language: `ko-KR`

- Documentation version: `1.0.4`

- Source: [pdfs/getting-started/worker.ko-KR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/getting-started/worker.ko-KR.mdx)

---

PDFs는 Worker[^web-worker]에서 페이지 썸네일을 렌더링할 수 있습니다. `UniverPdfsUIPlugin`에 `thumbnailWorkerURL`을 전달하세요. Worker는 `OffscreenCanvas`를 사용합니다. 이 설정은 썸네일에만 적용되며 PDF 편집기 전체를 Worker로 옮기지 않습니다.

먼저 [설치 및 기본 사용법](https://docs.univer.ai/ko-KR/guides/pdfs/getting-started/installation.md)을 완료하세요. 아래 코드는 기존 설정을 확장합니다. 콘텐츠를 만들거나 불러오기 전에 플러그인을 등록하고, 이미 등록한 플러그인은 중복 등록하지 말고 설정을 수정하세요.

## 메인 스레드

```typescript title="main.ts"
import { UniverPdfsUIPlugin } from '@univerjs-pro/pdfs-ui'

univer.registerPlugin(UniverPdfsUIPlugin, {
  thumbnailWorkerURL: new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }),
})
```

## Worker 진입점

```typescript title="worker.ts"
import { startPdfPageThumbnailWorker } from '@univerjs-pro/pdfs-ui'

startPdfPageThumbnailWorker()
```

모듈 Worker와 별도 진입점 파일을 사용하세요. Worker와 메인 스레드의 패키지 버전을 맞춰야 합니다. 렌더링과 사용자 상호 작용은 메인 스레드에서 처리합니다.

[^web-worker]: Web Worker는 브라우저의 메인 스레드 밖에서 JavaScript를 실행하고 메시지로 통신합니다. 페이지 DOM에 직접 접근할 수 없으며, 계산을 Worker로 옮겨도 편집기 UI가 함께 이동하지는 않습니다.
