# 頁面與元素

> 建立 PDF 頁面、列舉可編輯元素，並控制元素幾何與堆疊順序。

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

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

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

- Source: [pdfs/features/core/pages-and-elements.zh-TW.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/features/core/pages-and-elements.zh-TW.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()`。

## 變換與移除元素

Facade 放置值使用 PDF 點。`getData()` 傳回的快照幾何使用核心 PDF 單位，因此應透過 Facade 方法更新放置。

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

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

使用 `remove()` 刪除可編輯元素。刪除後請勿重複使用已失效的包裝器。
