Данные модуля PDF
Узнайте о контракте сохраняемых данных IPdfUnitData и границе между импортированным содержимым PDF и сохраняемыми правками.
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 и позволяет экспортёрам определять, какие исходные операции можно копировать, скрывать или заменять.
Выберите правильное представление
pdf.getDocument() возвращает импортированную основу. pdf.save() возвращает полный снимок модуля с сохраняемым
состоянием правок. Расширенные интеграции могут получить текущую проекцию через
pdf.getModel().getMaterializedDocument().
Создание и сохранение снимка
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)Восстановите полный снимок через фасад:
const snapshot = await applicationStorage.load('pdf-unit-id')const pdf = univerAPI.createPdf(snapshot)Не изменяйте объект снимка после запуска модуля. Используйте методы фасада или зарегистрированные команды, чтобы проверка, отмена и повтор, совместная работа и замысел экспорта оставались согласованными.
PDF с блочным хранением
Большие или удалённо хранящиеся PDF могут использовать documentShell, fragmentIndex и fragmentBindings. Оболочка предоставляет размеры, порядок и метки страниц, а также ID блоков до загрузки содержимого каждой страницы. Фрагменты страниц и общих данных материализуются через поставщиков по мере необходимости для интерфейса.
Эти поля являются контрактами обмена и хранения. Код приложения обычно получает их от служб обмена PDF или совместной работы и сохраняет без изменений.
Насколько полезно это руководство?