# 페이지와 요소

> PDF 페이지를 만들고 편집 가능한 요소를 열거하며 요소의 기하 정보와 쌓임 순서를 제어합니다.

- Human documentation: [https://docs.univer.ai/ko-KR/guides/pdfs/features/core/pages-and-elements](https://docs.univer.ai/ko-KR/guides/pdfs/features/core/pages-and-elements)

- Agent Markdown: [https://docs.univer.ai/ko-KR/guides/pdfs/features/core/pages-and-elements.md](https://docs.univer.ai/ko-KR/guides/pdfs/features/core/pages-and-elements.md)

- Requested language: `ko-KR`

- Content language: `ko-KR`

- Documentation version: `1.0.4`

- Source: [pdfs/features/core/pages-and-elements.ko-KR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/features/core/pages-and-elements.ko-KR.mdx)

---

`FPdf`가 페이지를 소유하고 각 `FPdfPage`는 해당 페이지에 배치된 영속 편집 오버레이를 제공합니다.

## 페이지 읽기 및 삽입

페이지 인덱스는 0부터 시작합니다. `insertPage(index?)`는 인덱스에 삽입하고 생략하면 끝에 추가합니다. 빈 문서는 A4 크기를 사용합니다.

```ts
const pdf = univerAPI.getActivePdf()

if (!pdf) {
  throw new Error('No active PDF')
}

const page = pdf.getPageByIndex(0) ?? pdf.insertPage()
const pages = pdf.getPages()
const samePage = pdf.getPageById(page.getId())
```

## 편집 가능한 요소 열거

`getElements()`는 편집 가능한 오버레이를 z 순서로 반환합니다. 가져온 PDF의 네이티브 객체는 반환하지 않습니다.

```ts
const elements = page.getElements()
const [firstElement] = elements
const sameElement = firstElement ? page.getElementById(firstElement.getId()) : null
```

특화 래퍼가 필요하면 타입 getter인 `getTextBoxes()`, `getParagraphs()`, `getLists()`, `getTables()`, `getImages()`, `getDividers()`, `getAnnotations()`를 사용하세요.

## 요소 변환 및 제거

퍼사드 배치는 PDF 포인트를 사용합니다. `getData()`가 반환하는 스냅샷 기하 정보는 코어 PDF 단위를 사용하므로 퍼사드 메서드로 배치를 업데이트하세요.

```ts
const [element] = page.getElements()

if (element) {
  element
    .setPosition(36, 72)
    .setSize(288, 144)
    .setRotation(5)
    .setVisible(true)
    .setLocked(false)
    .bringToFront()
}
```

편집 가능한 요소를 삭제하려면 `remove()`를 사용하세요. 제거한 뒤에는 유효하지 않은 래퍼를 다시 사용하지 마세요.
