PDFium Delphi Component Docs

Metodo CommitIncrementalSave

Componente: TPdf  ·  Unità: PDFium
Aggiunge le modifiche fatte dall'ultimo commit come una nuova revisione PDF

Sintassi

function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;

StreamDestinazione del documento completo, inclusi la baseline e ogni revisione aggiunta finora; nil solleva EPdfError
InfoTPdfIncrementalCommitInfo riceve i conteggi di oggetti e byte, gli offset xref precedente e nuovo, il numero di revisioni, lo stato di cifratura e validazione e i risultati di durabilità del file
ResultTrue quando l'output completo validato è stato scritto

 

function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;

FileNameFile di destinazione, sostituito in modo atomico attraverso un file laterale durevole nella stessa directory
InfoLo stesso report TPdfIncrementalCommitInfo dell'overload su stream, con Durable e ReplacedAtomically impostati dopo che quelle fasi su file hanno successo
ResultTrue quando il file laterale validato ha sostituito la destinazione

Descrizione

Confronta il documento attivo con lo stato acquisito all'ultimo commit, o con la baseline per il primo, e aggiunge gli oggetti modificati più una nuova sezione di cross-reference. I byte precedenti non vengono mai riscritti, quindi ogni revisione precedente resta byte-identica e recuperabile

AppendedByteCount è la dimensione della sola nuova revisione, mentre PreviousOutputByteCount e OutputByteCount delimitano il prefisso immutabile e il risultato completo. PreviousXrefOffset e OutputXrefOffset identificano la catena di revisioni, e ChangedObjectCount riporta quanti oggetti ha trovato il diff

Ogni candidato passa controlli sparsi sui confini di revisione, una riapertura indipendente rigorosa, controlli del numero di pagine e del security handler e la validazione del PDF MAC quando presente. Encrypted e Validated riportano queste proprietà

L'overload per file scrive accanto alla destinazione, esegue il flush del file temporaneo, lo chiude e riapre, ripete la verifica e conferma una sostituzione atomica. Windows richiede sostituzione write-through; Unix controlla il supporto al flush della directory prima della sostituzione ed esegue il flush della directory padre dopo il rename

Un errore prima della sostituzione lascia intatta la destinazione precedente e ripristina baseline e numero di revisioni della sessione. Se il flush della directory Unix fallisce dopo un rename riuscito, l'unit interna FPdfPlatform solleva EPdfOutputCommitError: l'output è già sostituito, Info.ReplacedAtomically=True e Info.Durable=False e la sessione mantiene la baseline confermata, impedendo a modifiche successive di aggiungersi all'output obsoleto

Durable segnala il completamento riuscito delle fasi di flush richieste dalla piattaforma. Non certifica hardware di storage o comportamento del filesystem dopo una perdita di alimentazione. Anche altre API di salvataggio che usano la stessa sostituzione atomica possono sollevare questa eccezione dopo il commit; distinguere questo stadio dagli errori che conservano l'output precedente

Chiamarlo senza una sessione aperta solleva EPdfError, quindi BeginIncrementalSave deve venire prima

Vedere anche

BeginIncrementalSave, EndIncrementalSave, IncrementalSaveActive, SaveAs