function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
| Stream | ベースラインとそれまでに追記されたすべてのリビジョンを含む完全なドキュメントの書き込み先。nil を指定すると EPdfError が発生します |
| Info | TPdfIncrementalCommitInfo が、オブジェクト数とバイト数、新旧の xref オフセット、リビジョン数、暗号化と検証の状態、ファイルの耐久性の結果を受け取ります |
| Result | 検証済みの完全な出力が書き込まれた場合に True |
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
| FileName | 書き込み先ファイル。同じディレクトリ内の耐久性のあるサイドファイルを通じてアトミックに置き換えられます |
| Info | ストリームオーバーロードと同じ TPdfIncrementalCommitInfo レポート。これらのファイル段階が成功した後 Durable と ReplacedAtomically が設定されます |
| Result | 検証済みのサイドファイルが書き込み先を置き換えた場合に True |
現在のドキュメントを、前回のコミット時に取得した状態と、初回の場合はベースラインと比較し、変更されたオブジェクトと新しいクロスリファレンスセクションを追記します。それ以前のバイトは書き換えられないため、過去のリビジョンはすべてバイト単位で同一のまま復元可能です
AppendedByteCount は新しいリビジョン単独のサイズであり、PreviousOutputByteCount と OutputByteCount が不変の接頭部と完全な結果の範囲を示します。PreviousXrefOffset と OutputXrefOffset がリビジョンチェーンを特定し、ChangedObjectCount が差分で見つかったオブジェクト数を報告します
各候補は、疎なリビジョン境界チェック、厳密な独立した再オープン、ページ数とセキュリティハンドラのチェック、および存在する場合は PDF MAC 検証を通過します。Encrypted と Validated がこれらの性質を報告します
ファイル用オーバーロードは出力先の隣に一時ファイルを書き、flush して閉じてから開き直します。再検証後にアトミックな置換を commit します。Windows は write-through の置換を要求し、Unix は置換前にディレクトリの flush 対応を確認して、rename 後に親ディレクトリを flush します
置換前の失敗は以前の出力先を保持し、セッションの baseline とリビジョン数を戻します。rename 成功後の Unix ディレクトリ flush 失敗は、内部の FPdfPlatform から EPdfOutputCommitError を送出します。出力は既に置換済みで、Info.ReplacedAtomically=True、Info.Durable=False です。セッションは commit 済み baseline を維持し、後の編集が古い出力に追加されるのを防ぎます
Durable はプラットフォームに要求した flush 段階の正常完了を示します。停電後のストレージ機器やファイルシステムの動作を認証するものではありません。同じアトミックな置換を使う他のファイル保存 API も、置換後にこの commit 済み出力の例外を送出し得ます。呼び出し側は、以前の出力を保持する失敗と区別してください
開いているセッションなしで呼び出すと EPdfError が発生するため、先に BeginIncrementalSave を呼び出しておく必要があります