function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
| Stream | Ziel für das vollständige Dokument, einschließlich der Basislinie und jeder bisher angehängten Revision; nil löst einen EPdfError aus |
| Info | TPdfIncrementalCommitInfo empfängt Objekt- und Byteanzahlen, frühere und neue xref-Offsets, die Revisionsanzahl, Verschlüsselungs- und Validierungszustand sowie Ergebnisse zur Datei-Haltbarkeit |
| Result | True, wenn die vollständige validierte Ausgabe geschrieben wurde |
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
| FileName | Zieldatei, die über eine haltbare Nebendatei im selben Verzeichnis atomar ersetzt wird |
| Info | Derselbe TPdfIncrementalCommitInfo-Bericht wie bei der Stream-Überladung, wobei Durable und ReplacedAtomically gesetzt werden, nachdem diese Datei-Phasen erfolgreich waren |
| Result | True, wenn die validierte Nebendatei das Ziel ersetzt hat |
Vergleicht das Live-Dokument mit dem Zustand, der beim letzten Commit erfasst wurde, oder bei dem ersten Commit mit der Basislinie, und hängt die geänderten Objekte samt einer frischen Cross-Reference-Sektion an. Frühere Bytes werden nie neu geschrieben, sodass jede frühere Revision byteidentisch und wiederherstellbar bleibt
AppendedByteCount ist allein die Größe der neuen Revision, während PreviousOutputByteCount und OutputByteCount das unveränderliche Präfix und das vollständige Ergebnis abgrenzen. PreviousXrefOffset und OutputXrefOffset identifizieren die Revisionskette, und ChangedObjectCount meldet, wie viele Objekte der Diff gefunden hat
Jeder Kandidat durchläuft spärliche Revisionsgrenz-Prüfungen, ein striktes unabhängiges erneutes Öffnen, Seitenanzahl- und Security-Handler-Prüfungen sowie eine PDF-MAC-Validierung, wenn vorhanden. Encrypted und Validated melden diese Eigenschaften
Die Dateiüberladung schreibt neben das Ziel, synchronisiert die temporäre Datei, schließt und öffnet sie erneut, prüft nochmals und ersetzt atomar; Windows fordert Write-through-Ersetzung, Unix prüft Verzeichnissynchronisierung vorher und synchronisiert das Elternverzeichnis nach Umbenennung
Fehler vor Ersetzung erhalten das alte Ziel und stellen Sessionbasis und Revisionsanzahl wieder her; scheitert unter Unix die Verzeichnissynchronisierung nach erfolgreicher Umbenennung, löst die interne Unit FPdfPlatform EPdfOutputCommitError aus: Ausgabe bereits ersetzt, Info.ReplacedAtomically=True, Info.Durable=False; die Session behält die committed Basis, damit spätere Änderungen nicht an veraltete Ausgabe angehängt werden
Durable meldet erfolgreichen Abschluss der angeforderten Plattformsynchronisierungen, zertifiziert aber weder Hardware noch Dateisystemverhalten nach Stromausfall; andere APIs mit derselben atomaren Ersetzung können ebenfalls diese Ausnahme nach Commit auslösen; unterscheiden Sie sie von Fehlern mit erhaltenem Altziel
Der Aufruf ohne offene Sitzung löst einen EPdfError aus, daher muss BeginIncrementalSave zuerst kommen