バージョン付きオブジェクトグラフ JSON ラウンドトリップ
HotPDF は、完全なロード済み間接オブジェクトグラフをバージョン付き JSON にストリーミングし、PDF 値をジョブ記述に平坦化せずに編集可能なドキュメントを再構築できます
スキーマと互換性
現在の HotPDF-object-graph-2 スキーマは、schemaVersion、minimumReaderVersion、PDF バージョン、トレーラー Root と Info 参照、選択されたすべての間接オブジェクト、削除されたオブジェクト識別子、スナップショットまたは増分種類を記録します
リーダーは、互換性のために以前の HotPDF-object-graph-1 形式を受け入れ、ターゲットドキュメントを変更する前に将来または互換性のないスキーマバージョンを拒否します
v2 は各ストリームペイロードが生フィルター済みデータかデコード済みデータかを記録するため、編集ラウンドトリップには v2 ストリーム API を使用してください
ストリーミングとバイナリペイロード
ExportLoadedObjectGraphJSONToStream は、ドキュメントサイズの JSON 文字列を構築せずに、オブジェクトと再帰的に順序付けられた PDF 値を宛先ストリームに直接書き込みます
生またはデコード済みのストリームバイトは、省略するか、チャンク化された base64 として埋め込むか、供給されたディレクトリの下にサイドカーファイルとして書き込むことができます
サイドカー名は安全なリーフ名であり、公開は兄弟一時ファイルとそれに続く原子的置換を使用し、インポートはパス走査または絶対パスを拒否します
インポーターは固定サイズの入力ブロックを読み取り、JSON バイト、オブジェクト数と番号、値深度、文字列バイト、個別ストリーム、集約ストリームバイトの制限を適用しながら、一度に 1 つの上位レベルオブジェクトエントリのみを具体化します
スナップショットと増分モード
スナップショットは完全なグラフをエクスポートし、ogjimReplace は候補ドキュメントを検証してからターゲットに交換します
増分エクスポートには、ダーティ、必須書き込み、削除済みオブジェクトのみが含まれます。ogjimUpdate は、既存グラフとデルタの和集合に対して参照を検証し、ロード済みグラフトランザクション機構を通じてコミットします
不正な値、未解決の参照、無効な Catalog または Pages ツリー、一貫性のない直接または間接ストリーム長、枯渇した予算、失敗したサイドカー読み取りは、ターゲットを変更しないままにします
セキュリティ境界
JSON グラフには PDF オブジェクトとトレーラー Root と Info の関係が含まれますが、パスワード、暗号化キー、アクティブなセキュリティハンドラー状態を決してエクスポートしません
したがって、置き換えられたスナップショットは、アプリケーションが保存前に出力保護を明示的に設定するまで暗号化されていません