# 打印

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

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

- Requested language: `zh-CN`

- Content language: `zh-CN`

- Documentation version: `1.0.0-rc.0`

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

---

#### Package metadata

```json
{
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs-pro/slides-print",
      "locale": "@univerjs-pro/slides-print/locale/zh-CN",
      "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)
```

## 依赖

打印插件需要在核心 Slides 模型之后注册：

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

浏览器编辑器还需要保持 [快速开始](https://docs.univer.ai/zh-CN/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`。
