# Данные модуля PDF

> Узнайте о контракте сохраняемых данных IPdfUnitData и границе между импортированным содержимым PDF и сохраняемыми правками.

- Human documentation: [https://docs.univer.ai/ru-RU/guides/pdfs/model/pdf-data](https://docs.univer.ai/ru-RU/guides/pdfs/model/pdf-data)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/pdfs/model/pdf-data.md](https://docs.univer.ai/ru-RU/guides/pdfs/model/pdf-data.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [pdfs/model/pdf-data.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/model/pdf-data.ru-RU.mdx)

---

## IPdfUnitData

`IPdfUnitData` — сохраняемый снимок одного модуля `UNIVER_PDF`. Его схема — `univer-pdf-unit`, текущая версия схемы — `1`, а номера редакций начинаются с `1`.

| Свойство            | Тип                                           | Назначение                                                                              |
| ------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------- |
| `schema`            | `'univer-pdf-unit'`                           | Стабильный идентификатор схемы модуля PDF                                               |
| `schemaVersion`     | `1`                                           | Текущая версия схемы модуля PDF                                                         |
| `id`                | `string`                                      | Идентификатор, общий для хранилища, совместной работы, ресурсов и экспорта              |
| `rev`               | `number`                                      | Авторитетная редакция модуля                                                            |
| `name`              | `string`                                      | Отображаемое для пользователя имя PDF                                                   |
| `sourceDocumentRef` | `IPdfSourceDocumentRef`                       | Неизменяемые сведения о происхождении импортированного артефакта PDF                    |
| `document`          | `IPdfDocument`                                | Импортированная основа или основа пустого документа                                     |
| `editState`         | `IPdfDurableEditState`                        | Принятый и сохранённый замысел правок                                                   |
| `documentShell?`    | `IPdfDocumentShell`                           | Небольшой каталог страниц и индекс фрагментов для PDF с блочным хранением               |
| `fragmentIndex?`    | `IPdfUnitFragmentIndex`                       | Логическое сопоставление страниц и общих данных с сохранёнными фрагментами              |
| `resourceBindings?` | `Record<string, PdfDurableResourceBinding>`   | Сохраняемые привязки нативных или управляемых Univer ресурсов                           |
| `fragmentBindings?` | `Record<string, IPdfFragmentArtifactBinding>` | Привязки файлов времени выполнения для независимо загружаемых фрагментов                |
| `capabilityReport?` | `IPdfCapabilityReport`                        | Решения импорта или времени выполнения о поддерживаемых действиях и резервных вариантах |
| `metadata?`         | `Record<string, PdfJsonValue>`                | Метаданные приложения или интеграции                                                    |

## Основа и слой правок

Импортированный `document` — неизменяемая основа. При редактировании он не перезаписывается напрямую. Замены текста, вставленные объекты, изменения страниц, скрытие исходных операций и управляемые ресурсы записываются в `editState`, а затем проецируются поверх основы для отрисовки и экспорта.

Такое разделение сохраняет происхождение нативного PDF и позволяет экспортёрам определять, какие исходные операции можно копировать, скрывать или заменять.

> [!WARNING: Выберите правильное представление]
> `pdf.getDocument()` возвращает импортированную основу. `pdf.save()` возвращает полный снимок модуля с сохраняемым
> состоянием правок. Расширенные интеграции могут получить текущую проекцию через
> `pdf.getModel().getMaterializedDocument()`.

## Создание и сохранение снимка

```ts
const pdf = univerAPI.createPdf({ name: 'Untitled contract' })
const page = pdf.getPageByIndex(0)

page?.insertTextBox({
  text: 'Draft',
  left: 36,
  top: 36,
})

const snapshot = pdf.save()
await applicationStorage.save(snapshot.id, snapshot)
```

Восстановите полный снимок через фасад:

```ts
const snapshot = await applicationStorage.load('pdf-unit-id')
const pdf = univerAPI.createPdf(snapshot)
```

Не изменяйте объект снимка после запуска модуля. Используйте методы фасада или зарегистрированные команды, чтобы проверка, отмена и повтор, совместная работа и замысел экспорта оставались согласованными.

## PDF с блочным хранением

Большие или удалённо хранящиеся PDF могут использовать `documentShell`, `fragmentIndex` и `fragmentBindings`. Оболочка предоставляет размеры, порядок и метки страниц, а также ID блоков до загрузки содержимого каждой страницы. Фрагменты страниц и общих данных материализуются через поставщиков по мере необходимости для интерфейса.

Эти поля являются контрактами обмена и хранения. Код приложения обычно получает их от служб обмена PDF или совместной работы и сохраняет без изменений.
