procedure BeginIncrementalSave(AllowSignedDocument: Boolean = False);
function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
procedure EndIncrementalSave;
property IncrementalSaveActive: Boolean;
| AllowSignedDocument | Erlaubt explizit eine Sitzung auf einem signierten Dokument; Standard lehnt sie ab |
| Stream | TStream, der nach diesem Commit das vollständige akkumulierte PDF empfängt |
| FileName | Ausgabepfad, der erst ersetzt wird, nachdem eine temporäre Geschwisterdatei erfolgreich war |
| Info | Pro-Commit-Statistiken, die nach erfolgreichem Zielschreiben zurückgegeben werden |
| ChangedObjectCount | Anzahl der von diesem Commit angehängten geänderten oder neuen indirekten Objekte |
| AppendedByteCount | Bytes, die nach dem exakten Präfix der vorherigen Ausgabe angehängt wurden |
| OutputByteCount | Gesamtbytes in der von diesem Commit zurückgegebenen vollständigen Ausgabe |
| RevisionCount | Anzahl der in der aktuellen Sitzung festgeschriebenen nicht-leeren Revisionen |
BeginIncrementalSave erfasst einen stabilen PDFium-Semantik-Schnappschuss sowohl als Vergleichsbasis als auch als erste vollständige Ausgabe
Jeder Commit erfasst den aktuellen Zustand, löst aktive klassische, hybride, xref-Stream- und Objektstrom-Objekte auf und vergleicht dann Objektgeneration und exakte Body-Bytes
Nur geänderte oder neue indirekte Objekte werden nach der vorherigen Ausgabe geschrieben, gefolgt von der kleinsten erforderlichen xref- und Trailer-Revision
Eine Klassisch-xref-Quelle fährt mit klassischen xref-Tabellen fort, während eine xref-Stream-Quelle mit selbstindizierten xref-Streams fortfährt
Wenn sich nichts geändert hat, wird die vorherige Ausgabe Byte für Byte zurückgegeben, keine Revision angehängt und RevisionCount nicht erhöht
Die Datei-Überladung schreibt eine temporäre Geschwisterdatei, ersetzt das Ziel atomar und stellt den Sitzungszustand wieder her, wenn Schreiben oder Ersetzen fehlschlägt
AllowSignedDocument ist True; explizite Erlaubnis validiert keine DocMDP- oder FieldMDP-RichtlinieEPdfError ausCompressed-Eigenschaft, damit der Objektvergleich stabil bleibt
var
Info: TPdfIncrementalCommitInfo;
begin
Pdf.BeginIncrementalSave;
try
Pdf.PageNumber := 1;
Pdf.PageRotation := ro90;
Pdf.CommitIncrementalSave('revision-1.pdf', Info);
Pdf.PageRotation := ro180;
Pdf.CommitIncrementalSave('revision-2.pdf', Info);
finally
Pdf.EndIncrementalSave;
end;
end;