function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
| Stream | Cíl pro kompletní dokument, včetně základní podoby a každé doposud připojené revize; nil vyvolá EPdfError |
| Info | TPdfIncrementalCommitInfo přijímá počty objektů a bajtů, předchozí a nový posun xref, počet revizí, stav šifrování a validace a výsledky odolnosti souboru |
| Result | True, když se kompletní validovaný výstup zapsal |
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
| FileName | Cílový soubor, atomicky nahrazený prostřednictvím odolného pomocného souboru ve stejném adresáři |
| Info | Stejný report TPdfIncrementalCommitInfo jako u přetížení se streamem, s Durable a ReplacedAtomically nastavenými poté, co tyto souborové fáze uspějí |
| Result | True, když validovaný pomocný soubor nahradil cíl |
Porovná živý dokument se stavem zachyceným při posledním commitu, u prvního commitu se základní podobou, a připojí změněné objekty plus novou sekci křížových odkazů. Dřívější bajty se nikdy nepřepisují, takže každá předchozí revize zůstává bajtově identická a obnovitelná
AppendedByteCount je velikost samotné nové revize, zatímco PreviousOutputByteCount a OutputByteCount ohraničují neměnnou předponu a kompletní výsledek. PreviousXrefOffset a OutputXrefOffset identifikují řetěz revizí a ChangedObjectCount hlásí, kolik objektů diff našel
Každý kandidát projde řídkými kontrolami hranic revizí, přísným nezávislým opětovným otevřením, kontrolami počtu stránek a bezpečnostního handleru a validací PDF MAC, když je přítomna. Encrypted a Validated tyto vlastnosti hlásí
Souborový overload zapisuje vedle cíle, flushne pomocný soubor, zavře ho a znovu otevře, zopakuje validaci a potom atomicky nahradí cíl. Windows požaduje write-through náhradu; Unix před náhradou ověří podporu flush adresáře a po přejmenování flushne rodičovský adresář
Chyba před náhradou ponechá předchozí cíl beze změny a obnoví baseline session i počet revizí. Selhání flush adresáře na Unixu po úspěšném přejmenování vyvolá EPdfOutputCommitError z interní unity FPdfPlatform: výstup už byl nahrazen, Info.ReplacedAtomically=True a Info.Durable=False, session zachová commitnutou baseline, aby další úprava nemohla připojit revizi k zastaralému výstupu
Durable hlásí úspěšné dokončení platformou požadovaných flush fází. Nepotvrzuje chování hardware úložiště ani filesystému po výpadku napájení. Stejnou výjimku commitnutého výstupu mohou po náhradě vyvolat i jiná API ukládání se stejnou atomickou náhradou; volající musí tuto fázi odlišit od chyb zachovávajících původní výstup
Volání bez otevřené relace vyvolá EPdfError, takže BeginIncrementalSave musí přijít jako první