# Características principales

- Human documentation: [https://docs.univer.ai/es-ES/guides/pdfs/features/core](https://docs.univer.ai/es-ES/guides/pdfs/features/core)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/pdfs/features/core.md](https://docs.univer.ai/es-ES/guides/pdfs/features/core.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [pdfs/features/core/index.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/features/core/index.es-ES.mdx)

---

#### Package metadata

```json
{
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs-pro/pdfs",
      "facade": "@univerjs-pro/pdfs/facade"
    },
    {
      "client": "@univerjs-pro/pdfs-ui",
      "locale": "@univerjs-pro/pdfs-ui/locale/es-ES",
      "style": "@univerjs-pro/pdfs-ui/lib/index.css"
    }
  ],
  "license": true,
  "server": false
}
```

El núcleo de Univer PDFs proporciona una unidad PDF formal, una capa de edición persistente y un espacio de trabajo en el navegador. El PDF importado se conserva como referencia de origen, mientras que los cambios aceptados se guardan en la instantánea de la unidad y se renderizan como el documento actual.

## Funciones

* **Modelo de unidad PDF**: almacena el documento de origen, la estructura de páginas, los recursos y la intención de edición persistente en `IPdfUnitData`.
* **Operaciones de páginas y elementos**: admite la navegación e inserción de páginas, además de texto, listas, tablas, imágenes, divisores y anotaciones editables.
* **Espacio de trabajo del navegador**: proporciona renderizado de páginas PDF, miniaturas, selección, controles de edición, portapapeles e interfaz de inspección.
* **Canal de comandos**: aplica los cambios aceptados mediante comandos y lotes de mutaciones persistentes para que guardar, deshacer y rehacer compartan un solo modelo.
* **Facade API**: crea, busca, edita y guarda unidades PDF mediante objetos de PDF, página, elemento y texto nativo.

## Modo plugin

### Instalación

#### npm

```bash
npm install @univerjs/core @univerjs/design @univerjs/ui @univerjs-pro/license @univerjs-pro/pdfs @univerjs-pro/pdfs-ui
```

#### pnpm

```bash
pnpm add @univerjs/core @univerjs/design @univerjs/ui @univerjs-pro/license @univerjs-pro/pdfs @univerjs-pro/pdfs-ui
```

#### yarn

```bash
yarn add @univerjs/core @univerjs/design @univerjs/ui @univerjs-pro/license @univerjs-pro/pdfs @univerjs-pro/pdfs-ui
```

#### bun

```bash
bun add @univerjs/core @univerjs/design @univerjs/ui @univerjs-pro/license @univerjs-pro/pdfs @univerjs-pro/pdfs-ui
```

### Uso

```ts
import { UniverLicensePlugin } from '@univerjs-pro/license'
import { UniverPdfsPlugin } from '@univerjs-pro/pdfs'
import { UniverPdfsUIPlugin } from '@univerjs-pro/pdfs-ui'
import PdfsUIEnUS from '@univerjs-pro/pdfs-ui/locale/en-US'
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { FUniver } from '@univerjs/core/facade'
import DesignEnUS from '@univerjs/design/locale/en-US'
import { UniverUIPlugin } from '@univerjs/ui'
import UIEnUS from '@univerjs/ui/locale/en-US'
import '@univerjs-pro/pdfs/facade'
import '@univerjs/design/lib/index.css'
import '@univerjs/ui/lib/index.css'
import '@univerjs-pro/pdfs-ui/lib/index.css'

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(DesignEnUS, UIEnUS, PdfsUIEnUS),
  },
})

univer.registerPlugin(UniverUIPlugin, { container: 'app' })
univer.registerPlugin(UniverLicensePlugin, {
  license: process.env.CLIENT_LICENSE_TEXT,
})
univer.registerPlugin(UniverPdfsPlugin)
univer.registerPlugin(UniverPdfsUIPlugin)

const univerAPI = FUniver.newAPI(univer)
const pdf = univerAPI.createPdf({ name: 'Untitled PDF' })
```

`UniverPdfsPlugin` administra la unidad PDF y los comandos persistentes; `UniverPdfsUIPlugin` administra el visor del navegador y sus controles de edición. Para una interfaz de solo lectura, usa `{ editor: { enabled: false } }`. Una aplicación colaborativa puede añadir `@univerjs-pro/pdfs-editor` junto con los plugins de colaboración que requiere.

## Modo preestablecido

Univer PDFs no ofrece actualmente un paquete de preset. Crea las aplicaciones PDF en modo plugin.

## Controles de edición y vista

Inicio ofrece copiar, cortar, pegar, modo de herramienta y anotaciones. Insertar permite añadir páginas, cuadros de texto, párrafos, listas, tablas, imágenes y separadores. Vista ofrece zoom, pantalla completa, visibilidad de anotaciones y desplazamiento continuo. Al seleccionar texto o una tabla se abren controles contextuales, incluido el inspector y los estilos de tabla. Conserve el valor predeterminado `editor.enabled: true` de `UniverPdfsUIPlugin` para usar estos controles de cinta.

## Orden de menús y disposición en cuadrícula

Configura `menu` y `ribbonType` en el registro existente de `UniverUIPlugin`. Son opciones de la interfaz compartida, no de `UniverPdfsUIPlugin`. El ejemplo utiliza los identificadores reales de los menús de PDFs:

### Configuración inicial

```ts
import type { MenuConfig } from '@univerjs/ui'
import { UniverUIPlugin } from '@univerjs/ui'

const menu: MenuConfig = {
  'ribbon.view': { order: -1 },
  'ribbon.start.layout': { order: -1 },
  'pdf.menu.tool.highlight': {
    order: 1,
    gridLayout: { row: 2, column: 1 },
  },
  'pdf.menu.tool.ink': {
    order: 0,
    gridLayout: { row: 1, column: 1 },
  },
}

univer.registerPlugin(UniverUIPlugin, { container: 'app', ribbonType: 'grid', menu })
```

`order` ordena de menor a mayor las pestañas, grupos o elementos del mismo nivel; no mueve elementos a otro grupo. El identificador del elemento se obtiene de su atributo `data-u-command` y no tiene por qué coincidir con el de la orden.

### Actualizaciones en ejecución

Importa `@univerjs/ui/facade` antes de crear `univerAPI` con `FUniver.newAPI(univer)`. [`updateMenuConfig()`](https://docs.univer.ai/es-ES/reference/facade/univer.md#updatemenuconfig) combina los cambios, conserva los campos no especificados y actualiza los menús. La configuración también se aplica a los menús registrados posteriormente.

```ts
import '@univerjs/ui/facade'

univerAPI.updateMenuConfig({
  'pdf.menu.tool.highlight': { gridLayout: { row: 2, column: 1, showLabel: true, width: 96 } },
})
```

`gridLayout` solo afecta al Ribbon en cuadrícula. Cada grupo tiene dos filas y `row` y `column` empiezan en 1. Las coordenadas explícitas determinan la posición: al intercambiar celdas ocupadas, actualiza ambos elementos y no solo `order`. Los campos opcionales omitidos conservan la configuración o el Schema existente. Consulta [`IRibbonGridLayout`](https://docs.univer.ai/es-ES/reference/packages/plugins/univerjs/ui.md#iribbongridlayout) para los tamaños de celda, etiquetas, anchuras y tamaños de icono.

Mantén habilitada la edición en `UniverPdfsUIPlugin`: `editor.enabled: false` impide registrar el Ribbon del producto. Las modificaciones de menú no crean botones que no estén registrados.

Los botones personalizados y las entradas de submenú también aceptan `order` y `gridLayout` en [`createMenu()` y `createSubmenu()`](https://docs.univer.ai/es-ES/reference/packages/plugins/univerjs/ui.md#ifacademenuitem); llama a `appendTo()` para registrarlos. El contenido del menú emergente no utiliza la cuadrícula del Ribbon.
