# 列印

- Human documentation: [https://docs.univer.ai/zh-TW/guides/slides/features/print](https://docs.univer.ai/zh-TW/guides/slides/features/print)

- Agent Markdown: [https://docs.univer.ai/zh-TW/guides/slides/features/print.md](https://docs.univer.ai/zh-TW/guides/slides/features/print.md)

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

- Source: [slides/features/print.zh-TW.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/features/print.zh-TW.mdx)

---

#### Package metadata

```json
{
  "mobile": true,
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs-pro/slides-print",
      "locale": "@univerjs-pro/slides-print/locale/zh-TW",
      "facade": "@univerjs-pro/slides-print/facade"
    }
  ],
  "license": true,
  "server": false
}
```

## 註冊列印能力

當 Slides 編輯器需要列印預覽或列印相關 facade API 時，使用 `@univerjs-pro/slides-print`。該套件還提供 `@univerjs-pro/slides-print/locale/*`，不需要額外的 CSS 匯入。

```ts
import { UniverSlidesPrintPlugin } from '@univerjs-pro/slides-print'
import SlidesPrintEnUS from '@univerjs-pro/slides-print/locale/en-US'
import '@univerjs-pro/slides-print/facade'

univer.registerPlugin(UniverSlidesPrintPlugin)
```

## 行動裝置支援

先設定[行動版編輯器](https://docs.univer.ai/zh-TW/guides/slides/getting-started/installation.md#mobile-support)。在本頁外掛模式的初始化程式碼中，將下列桌面版註冊替換為同一套件匯出的行動版外掛，並在**開啟文件前**完成。保留模型外掛、樣式、語言套件與 Facade 匯入，請勿同時註冊兩個版本。

| 套件                           | 桌面版註冊                     | 行動版註冊                           |
| ---------------------------- | ------------------------- | ------------------------------- |
| `@univerjs-pro/slides-print` | `UniverSlidesPrintPlugin` | `UniverSlidesPrintMobilePlugin` |

## 依賴

列印外掛需要在核心 Slides 模型之後註冊：

```ts
univer.registerPlugin(UniverSlidesPlugin)
univer.registerPlugin(UniverSlidesUIPlugin)
univer.registerPlugin(UniverSlidesPrintPlugin)
```

瀏覽器編輯器還需要保持 [快速開始](https://docs.univer.ai/zh-TW/guides/slides/getting-started/quickstart.md) 中的 render engine、UI、Docs、Drawing 和授權外掛註冊。

## Facade API

匯入 facade 入口後，`FUniver` 會增加 `printSlidesAsync` 方法：

```ts
import '@univerjs-pro/slides-print/facade'
```

列印目前啟用簡報中的全部投影片：

```ts
const univerAPI = FUniver.newAPI(univer)

await univerAPI.printSlidesAsync()
```

也可以使用從 1 開始的頁碼範圍列印指定投影片：

```ts
await univerAPI.printSlidesAsync({
  range: [
    { from: 1, to: 3 },
    { from: 6, to: 6 },
  ],
})
```

`range` 使用閉區間頁碼。不傳時會列印全部投影片。重疊範圍會被去重，並按照原始投影片順序列印；超出 deck 的範圍會裁剪到可用頁碼，起止順序反轉的無效範圍會被忽略。

## 注意事項

列印輸出依賴目前投影片快照、頁面尺寸、drawing 元素，以及可選的表格或圖表元素。如果你的 deck 可能包含表格或圖表，請在列印前註冊對應功能外掛。

## 列印版面與預覽

```ts
univerAPI.openSlidesPrintDialog({
  layout: univerAPI.Enum.SlidePrintLayoutType.Handout,
  slidesPerPage: 6,
  handoutOrder: univerAPI.Enum.SlidePrintHandoutOrder.Horizontal,
  frameSlides: true,
  showSlideNumber: true,
})
```

版面支援整頁、講義與備註頁；也可設定 `paperSize`、`direction`、`margin` 與 `marginCustom`。

講義每頁支援 1、2、3、4、6 或 9 張投影片；備註頁會使用目前投影片的講者備註。
