# Print

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

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

- Requested language: `en-US`

- Content language: `en-US`

- Documentation version: `1.0.0-rc.0`

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

---

#### Package metadata

```json
{
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs-pro/slides-print",
      "locale": "@univerjs-pro/slides-print/locale/en-US",
      "facade": "@univerjs-pro/slides-print/facade"
    }
  ],
  "server": false
}
```

## Register print support

Use `@univerjs-pro/slides-print` when a Slides editor needs print preview or print-related facade APIs. The package also provides `@univerjs-pro/slides-print/locale/*`; it does not require a separate CSS import.

```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)
```

## Requirements

Register the core Slides model before the print plugin:

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

For a browser editor, keep the render engine, UI plugin, Docs, Drawing, and license plugins registered as shown in [Quickstart](https://docs.univer.ai/guides/slides/getting-started/quickstart.md).

## Facade API

Import the facade entry to add `printSlidesAsync` to `FUniver`:

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

Print all slides in the active presentation:

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

await univerAPI.printSlidesAsync()
```

Print selected slide ranges by 1-based page number:

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

Choose full-page, handout, or notes-page output and open the built-in preview:

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

Print options also include `paperSize`, `direction`, `margin`, and `marginCustom`. Handouts support 1, 2, 3, 4, 6, or 9 slides per page.

`range` accepts inclusive page ranges. If omitted, all slides are printed. Overlapping ranges are de-duplicated and printed in the original slide order. Ranges outside the deck are clipped to the available slides, and invalid reversed ranges are ignored.

## Notes

Print output depends on the current slide snapshot, page size, speaker notes, drawing elements, and optional table or chart elements. If your deck can contain tables or charts, register those feature plugins before printing.
