PDFium Delphi Component Docs

Relácia inkrementálneho ukladania

Component: TPdf  ·  Unit: PDFium
Pripája len zmenené alebo nové nepriame objekty a pritom zachováva každý predchádzajúci výstupný bajt

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;

AllowSignedDocumentVýslovne povoľuje reláciu na podpísanom dokumente; predvolene sa zamietá
StreamTStream, ktorý po tomto commite prijme kompletný nahromadený súbor PDF
FileNameVýstupná cesta nahradená až po úspešnom zápise súrodeneckého dočasného súboru
InfoŠtatistiky jednotlivých commitov vrátené po úspešnom zápise do cieľa

Commit Information

ChangedObjectCountPočet zmenených alebo nových nepriamych objektov pripojených týmto commitom
AppendedByteCountBajty pripojené za presný prefix predchádzajúceho výstupu
OutputByteCountCelkový počet bajtov kompletného výstupu vráteného týmto commitom
RevisionCountPočet neprázdnych revízií odovzdaných v rámci aktuálnej relácie

Description

BeginIncrementalSave zachytí stabilný sémantický snímok PDFium, ktorý slúži zároveň ako základňa porovnávania aj ako prvý kompletný výstup

Každý commit zachytí aktuálny stav, vyrieši aktívne klasické, hybridné objekty xref-stream a object-stream a potom porovná generácie objektov aj presné bajty telies

Za predchádzajúci výstup sa zapíšu len zmenené alebo nové nepriame objekty, nasledované najmenšou potrebnou revíziou xref a trailer

Zdroj s klasickým xref pokračuje klasickými tabuľkami xref, zatiaľ čo zdroj s xref-stream pokračuje samoindexovanými prúdmi xref

Ak sa nič nezmenilo, vráti sa predchádzajúci výstup bajt po bajte, nepripája sa žiadna revízia a RevisionCount sa neposunie

Preťaženie so súborom zapíše súrodenecký dočasný súbor, atomicky nahradí cieľ a pri zlyhaní zápisu alebo nahradenia obnoví stav relácie

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