# Impression

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

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

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

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

---

#### Package metadata

```json
{
  "mobile": true,
  "preset": [
    {
      "client": "@univerjs/preset-sheets-advanced",
      "locale": "@univerjs/preset-sheets-advanced/locales/fr-FR",
      "style": "@univerjs/preset-sheets-advanced/lib/index.css"
    }
  ],
  "plugins": [
    {
      "client": "@univerjs-pro/sheets-print",
      "facade": "@univerjs-pro/sheets-print/facade",
      "locale": "@univerjs-pro/sheets-print/locale/fr-FR",
      "style": "@univerjs-pro/sheets-print/lib/index.css"
    }
  ],
  "license": true,
  "server": false
}
```

La fonctionnalité d’impression permet d’imprimer le contenu d’une feuille de calcul sur papier ou de l’exporter au format PDF pour le consulter hors ligne et le partager.

> Interactive example: [Open the playground](/playground/sheets/print)

## Mode prédéfini

La fonctionnalité d’impression est incluse dans le préréglage `@univerjs/preset-sheets-advanced`.

### Installation

> [!NOTE]
> À l’exécution, le préréglage `UniverSheetsAdvancedPreset` de `@univerjs/preset-sheets-advanced` dépend du préréglage
> `UniverSheetsDrawingPreset`. Installez d’abord `@univerjs/preset-sheets-drawing`.

#### npm

```bash
npm install @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced
```

#### pnpm

```bash
pnpm add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced
```

#### yarn

```bash
yarn add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced
```

#### bun

```bash
bun add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced
```

### Utilisation

```typescript
import { UniverSheetsAdvancedPreset } from '@univerjs/preset-sheets-advanced' // [!code ++]
import UniverPresetSheetsAdvancedEnUS from '@univerjs/preset-sheets-advanced/locales/en-US' // [!code ++]
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { UniverSheetsDrawingPreset } from '@univerjs/preset-sheets-drawing' // [!code ++]
import UniverPresetSheetsDrawingEnUS from '@univerjs/preset-sheets-drawing/locales/en-US' // [!code ++]
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'
import '@univerjs/preset-sheets-core/lib/index.css'
import '@univerjs/preset-sheets-drawing/lib/index.css' // [!code ++]
import '@univerjs/preset-sheets-advanced/lib/index.css' // [!code ++]

const { univerAPI } = createUniver({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      UniverPresetSheetsCoreEnUS,
      UniverPresetSheetsDrawingEnUS, // [!code ++]
      UniverPresetSheetsAdvancedEnUS, // [!code ++]
    ),
  },
  presets: [
    UniverSheetsCorePreset(),
    UniverSheetsDrawingPreset(), // [!code ++]
    UniverSheetsAdvancedPreset(), // [!code ++]
  ],
})
```

Si vous disposez d’une licence commerciale Univer, consultez la section [Utiliser une licence côté client](https://docs.univer.ai/fr-FR/server/license.md#in-preset-mode) pour effectuer la configuration.

### Préréglages et configuration

```typescript
interface IUniverSheetsAdvancedPresetConfig {
  print?: Partial<IUniverSheetsPrintConfig>
}

interface IUniverSheetsPrintConfig {
  /**
   * Whether to force the watermark to be displayed when printing
   * @default false
   */
  enforceWatermark?: boolean
}
```

## Mode extension

### Installation

#### npm

```bash
npm install @univerjs-pro/sheets-print
```

#### pnpm

```bash
pnpm add @univerjs-pro/sheets-print
```

#### yarn

```bash
yarn add @univerjs-pro/sheets-print
```

#### bun

```bash
bun add @univerjs-pro/sheets-print
```

### Utilisation

```typescript
import { UniverSheetsPrintPlugin } from '@univerjs-pro/sheets-print' // [!code ++]
import SheetsPrintPluginEnUS from '@univerjs-pro/sheets-print/locale/en-US' // [!code ++]
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import '@univerjs-pro/sheets-print/lib/index.css' // [!code ++]

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      SheetsPrintPluginEnUS, // [!code ++]
    ),
  },
})

univer.registerPlugin(UniverSheetsPrintPlugin) // [!code ++]
```

Si vous disposez d’une licence commerciale Univer, consultez la section [Utiliser une licence côté client](https://docs.univer.ai/fr-FR/server/license.md#in-plugin-mode) pour effectuer la configuration.

### Extensions et configuration

```typescript
interface IUniverSheetsPrintConfig {
  /**
   * Whether to force the watermark to be displayed when printing
   * @default false
   */
  enforceWatermark?: boolean
}
```

## Prise en charge mobile

Configurez d’abord l’[éditeur mobile](https://docs.univer.ai/fr-FR/guides/sheets/getting-started/installation.md#mobile-support). Dans l’initialisation en mode plugin de cette page, remplacez les inscriptions de bureau ci-dessous par les exports mobiles des mêmes paquets **avant d’ouvrir un document**. Conservez modèles, styles, traductions et imports Facade ; n’enregistrez pas les deux variantes.

| Paquet                       | Inscription de bureau     | Inscription mobile                |
| ---------------------------- | ------------------------- | --------------------------------- |
| `@univerjs-pro/sheets-print` | `UniverSheetsPrintPlugin` | `UniverSheetsPrintMobileUIPlugin` |

## Facade API

### Importation

> [!INFO: Remarque sur le mode extension]
> Seul le mode extension nécessite d’importer manuellement le package Facade. Le mode prédéfini inclut déjà le package
> Facade correspondant, aucune importation supplémentaire n’est donc nécessaire.

```typescript
import '@univerjs-pro/sheets-print/facade'
```

### Ouvrir la boîte de dialogue de configuration de l’impression

Utilisez `FWorkbook.openPrintDialog` pour ouvrir la boîte de dialogue de configuration de l’impression.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()

fWorkbook.openPrintDialog()
```

### Fermer la boîte de dialogue de configuration de l’impression

Utilisez la méthode `FWorkbook.closePrintDialog` pour fermer la boîte de dialogue de configuration de l’impression.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()
fWorkbook.openPrintDialog()

// Close the print configuration dialog after 3 seconds
setTimeout(() => {
  fWorkbook.closePrintDialog()
}, 3000)
```

### Mettre à jour la configuration de la mise en page

Utilisez la méthode [`FWorkbook.updatePrintConfig(config: ISheetPrintLayoutConfig)`](https://docs.univer.ai/fr-FR/reference/facade/workbook.md#updateprintconfig) pour mettre à jour la configuration de la mise en page.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getActiveSheet()
const subUnitId = fWorksheet.getSheetId()

// Update print layout config
fWorkbook.updatePrintConfig({
  area: univerAPI.Enum.PrintArea.CurrentSheet, // print current sheet
  subUnitIds: [subUnitId],
  paperSize: univerAPI.Enum.PrintPaperSize.A4, // A4 paper size
  scale: univerAPI.Enum.PrintScale.FitPage, // fit content to page
  freeze: [univerAPI.Enum.PrintFreeze.Row], // freeze row headers
  margin: univerAPI.Enum.PrintPaperMargin.Normal, // normal margin
  // ... other settings
})

// Start printing with the updated configuration
fWorkbook.print()
```

Pour le type complet et les paramètres, consultez [`FWorkbook.updatePrintConfig()`](https://docs.univer.ai/fr-FR/reference/facade/workbook.md#updateprintconfig).

### Mettre à jour la configuration du rendu d’impression

Utilisez la méthode [`FWorkbook.updatePrintRenderConfig(config: ISheetPrintRenderConfig)`](https://docs.univer.ai/fr-FR/reference/facade/workbook.md#updateprintrenderconfig) pour mettre à jour la configuration du rendu d’impression.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()

// Update print layout config by default
fWorkbook.updatePrintConfig({})

// Update print render config
fWorkbook.updatePrintRenderConfig({
gridlines: true, // show gridlines
hAlign: univerAPI.Enum.PrintAlign.Middle, // horizontal align middle
vAlign: univerAPI.Enum.PrintAlign.Middle, // vertical align middle
headerFooter: [ // the array of header and footer elements to include, here is page numbers and worksheet name
  univerAPI.Enum.PrintHeaderFooter.PageSize,
  univerAPI.Enum.PrintHeaderFooter.WorksheetTitle,
],
// ... other settings
})

// Start print
fWorkbook.print()
```

Pour le type complet et les paramètres, consultez [`FWorkbook.updatePrintRenderConfig()`](https://docs.univer.ai/fr-FR/reference/facade/workbook.md#updateprintrenderconfig).

### Imprimer

La méthode `FWorkbook.print` permet d’ouvrir directement la boîte de dialogue d’impression.

```typescript
// Using the default configuration you can pass in an empty object
workbook.updatePrintConfig({
// ... Print layout configuration
})
workbook.updatePrintRenderConfig({
// ... Print render configuration
})
workbook.print()
```

### Enregistrer une capture d’écran dans le presse-papiers

La méthode `FWorkbook.saveScreenshotToClipboard` permet d’enregistrer dans le presse-papiers l’image des données à imprimer.

Cette fonctionnalité est uniquement disponible avec une [licence](https://docs.univer.ai/fr-FR/server/license.md). Sans licence, son utilisation est restreinte et l’opération d’enregistrement renvoie `false`.

L’image est enregistrée dans le presse-papiers à l’aide de l’API Clipboard. L’opération peut échouer dans un environnement réseau non sécurisé ou dans un navigateur non compatible. Si elle réussit, elle renvoie `true`.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()
const result = await fWorkbook.saveScreenshotToClipboard()
```

### Obtenir une capture d’écran de la plage sélectionnée

La méthode `FRange.getScreenshot` permet d’obtenir une capture d’écran des données à imprimer dans la plage sélectionnée.

Cette fonctionnalité est uniquement disponible avec une [licence](https://docs.univer.ai/fr-FR/server/license.md). Sans licence, son utilisation est restreinte. L’opération d’enregistrement renvoie `false` en cas d’échec, ou une chaîne base64 contenant l’image en cas de réussite.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getActiveSheet()
const fRange = fWorksheet.getRange('A1:D10')
fRange.getScreenshot()
fRange.getScreenshot({ includeHeaders: true }) // Include row and column headers
```

### Écouteurs d’événements

Les événements suivants sont disponibles pour la fonctionnalité d’impression :

L’événement `univerAPI.Event.BeforeSheetPrintOpen` est déclenché avant l’ouverture de la boîte de dialogue de configuration de l’impression.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintOpen, (params) => {
  const { workbook, worksheet } = params

  // Cancel open print configuration dialog operation
  params.cancel = true
})

// Remove the event listener, use `disposable.dispose()`.
```

L’événement `univerAPI.Event.SheetPrintOpen` est déclenché après l’ouverture de la boîte de dialogue de configuration de l’impression.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintOpen, (params) => {
  const { workbook, worksheet } = params
})

// Remove the event listener, use `disposable.dispose()`.
```

L’événement `univerAPI.Event.BeforeSheetPrintConfirm` est déclenché avant l’ouverture de la boîte de dialogue de confirmation de l’impression.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintConfirm, (params) => {
  const { renderConfig, layoutConfig } = params

  // Cancel the print confirmation operation
  params.cancel = true
})

// Remove the event listener, use `disposable.dispose()`.
```

L’événement `univerAPI.Event.SheetPrintConfirmed` est déclenché après l’ouverture de la boîte de dialogue de confirmation de l’impression.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintConfirmed, (params) => {
  const { renderConfig, layoutConfig } = params
})

// Remove the event listener, use `disposable.dispose()`.
```

L’événement `univerAPI.Event.BeforeSheetPrintCanceled` est déclenché avant l’annulation de l’impression.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintCanceled, (params) => {
  const { renderConfig, layoutConfig } = params

  // Cancel the print cancel operation
  params.cancel = true
})

// Remove the event listener, use `disposable.dispose()`.
```

L’événement `univerAPI.Event.SheetPrintCanceled` est déclenché après l’annulation de l’impression.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintCanceled, (params) => {
  const { renderConfig, layoutConfig } = params
})

// Remove the event listener, use `disposable.dispose()`.
```
