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 | Výslovne povoľuje reláciu na podpísanom dokumente; predvolene sa zamietá |
| Stream | TStream, ktorý po tomto commite prijme kompletný nahromadený súbor PDF |
| FileName | Vý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 |
| ChangedObjectCount | Počet zmenených alebo nových nepriamych objektov pripojených týmto commitom |
| AppendedByteCount | Bajty pripojené za presný prefix predchádzajúceho výstupu |
| OutputByteCount | Celkový počet bajtov kompletného výstupu vráteného týmto commitom |
| RevisionCount | Počet neprázdnych revízií odovzdaných v rámci aktuálnej relácie |
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
AllowSignedDocument True; výslovné povolenie nevaliduje politiku DocMDP ani FieldMDPEPdfErrorCompressed, takže porovnávanie objektov zostáva stabilné
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;