PDFium Component Docs

Sesja zapisu przyrostowego

Component: TPdf  ·  Unit: PDFium
Dopisuje tylko zmienione lub nowe obiekty pośrednie, zachowując co do bajtu każde poprzednie wyjście

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;

AllowSignedDocumentJawnie zezwala na sesję na podpisanym dokumencie; domyślnie jest ona odrzucana
StreamTStream, który otrzymuje kompletny nagromadzony PDF po tym zatwierdzeniu
FileNameŚcieżka wyjściowa zastępowana dopiero po powodzeniu sąsiedniego pliku tymczasowego
InfoStatystyki pojedynczego zatwierdzenia zwracane po udanym zapisie do celu

Commit Information

ChangedObjectCountLiczba zmienionych lub nowych obiektów pośrednich dopisanych przez to zatwierdzenie
AppendedByteCountBajty dopisane po dokładnym prefiksie poprzedniego wyjścia
OutputByteCountŁączna liczba bajtów kompletnego wyjścia zwróconego przez to zatwierdzenie
RevisionCountLiczba niepustych rewizji zatwierdzonych w bieżącej sesji

Description

BeginIncrementalSave przechwytuje stabilną semantyczną migawkę PDFium zarówno jako punkt odniesienia porównania, jak i pierwsze kompletne wyjście

Każde zatwierdzenie przechwytuje bieżący stan, rozwiązuje aktywne obiekty klasyczne, hybrydowe, xref-stream i object-stream, a następnie porównuje generację obiektów i dokładne bajty treści

Po poprzednim wyjściu zapisywane są tylko zmienione lub nowe obiekty pośrednie, a po nich najmniejsza wymagana rewizja xref i trailer

Źródło z klasycznym xref kontynuuje z klasycznymi tabelami xref, natomiast źródło z xref-stream kontynuuje z samoindeksowanymi strumieniami xref

Jeśli nic się nie zmieniło, poprzednie wyjście jest zwracane bajt po bajcie, żadna rewizja nie jest dopisywana, a RevisionCount nie rośnie

Wariant plikowy zapisuje sąsiedni plik tymczasowy, atomowo zastępuje cel i przywraca stan sesji, gdy zapis lub zastąpienie się nie powiedzie

Constraints

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