PDFium Delphi Component Docs

Inkrementelle Speichersitzung

Komponente: TPdf  ·  Unit: PDFium
Hängt nur geänderte oder neue indirekte Objekte an, während jedes vorherige Ausgabebyte erhalten bleibt

Syntax

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;

AllowSignedDocumentErlaubt explizit eine Sitzung auf einem signierten Dokument; Standard lehnt sie ab
StreamTStream, der nach diesem Commit das vollständige akkumulierte PDF empfängt
FileNameAusgabepfad, der erst ersetzt wird, nachdem eine temporäre Geschwisterdatei erfolgreich war
InfoPro-Commit-Statistiken, die nach erfolgreichem Zielschreiben zurückgegeben werden

Commit-Informationen

ChangedObjectCountAnzahl der von diesem Commit angehängten geänderten oder neuen indirekten Objekte
AppendedByteCountBytes, die nach dem exakten Präfix der vorherigen Ausgabe angehängt wurden
OutputByteCountGesamtbytes in der von diesem Commit zurückgegebenen vollständigen Ausgabe
RevisionCountAnzahl der in der aktuellen Sitzung festgeschriebenen nicht-leeren Revisionen

Description

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

Einschränkungen

Example

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;

See Also

SaveAs, SaveAsObjectStream