Цикли обміну версіонованого графа об'єктів у JSON
HotPDF може потоково передавати повний граф завантажених непрямих об'єктів у версіонований JSON та відновлювати редагований документ, не сплющуючи значення PDF в опис завдання
Схема та сумісність
Поточна схема HotPDF-object-graph-2 фіксує schemaVersion, minimumReaderVersion, версію PDF, посилання на Root та Info у трейлері, кожен вибраний непрямий об'єкт, ідентифікатори видалених об'єктів та вид знімка чи інкрементного оновлення
Читачі приймають раніший формат HotPDF-object-graph-1 для сумісності та відхиляють майбутні чи несумісні версії схеми до зміни цільового документа
Для циклів обміну редагування використовуйте потоковий API v2, оскільки v2 фіксує, чи кожне потокове наповнення є сирими фільтрованими даними, чи декодованими даними
Потокова передача та двійкові наповнення
ExportLoadedObjectGraphJSONToStream записує об'єкти та рекурсивно впорядковані значення PDF безпосередньо в потік призначення, не будуючи рядок JSON розміром з документ
Сирі або декодовані байти потоку можна пропустити, вбудувати як base64 частинами або записати як бокові файли у вказаний каталог
Імена бокових файлів є безпечними іменами листових файлів, публікація використовує сусідній тимчасовий файл з наступною атомарною заміною, а імпорт відхиляє шляхи з обходом каталогу та абсолютні шляхи
Імпортер читає блоки вхідних даних фіксованого розміру та матеріалізує лише один запис об'єкта верхнього рівня за раз, дотримуючись обмежень на байти JSON, кількість і номер об'єктів, глибину значення, байти рядка, окремі потоки та сукупні байти потоку
Режими знімка та інкрементного оновлення
Знімок експортує повний граф, а ogjimReplace валідує документ-кандидат перед заміною цільового документа
Інкрементний експорт містить лише брудні об'єкти, об'єкти, що мають бути записані, та видалені об'єкти; ogjimUpdate валідує посилання проти об'єднання наявного графа та дельти, після чого фіксує зміни через механізм транзакцій завантаженого графа
Будь-яке пошкоджене значення, невирішене посилання, недійсне дерево Catalog або Pages, неузгоджена пряма чи непряма довжина /Length потоку, вичерпаний бюджет або невдале читання бокового файлу залишає цільовий документ незмінним
Безпекова межа
JSON-граф містить об'єкти PDF та зв'язки Root і Info у трейлері, але ніколи не експортує паролі, ключі шифрування чи активний стан обробника безпеки
Тому замінений знімок залишається незашифрованим, доки застосунок явно не налаштує захист вихідних даних перед збереженням