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 | Consente esplicitamente una sessione su un documento firmato; il default la rifiuta |
| Stream | TStream che riceve il PDF accumulato completo dopo questo commit |
| FileName | Percorso di output sostituito solo dopo che un file temporaneo fratello riesce |
| Info | Statistiche per commit restituite dopo che la scrittura di destinazione riesce |
| ChangedObjectCount | Numero di oggetti indiretti modificati o nuovi aggiunti da questo commit |
| AppendedByteCount | Byte aggiunti dopo il prefisso esatto dell'output precedente |
| OutputByteCount | Byte totali nell'output completo restituito da questo commit |
| RevisionCount | Numero di revisioni non vuote committate nella sessione corrente |
BeginIncrementalSave acquisisce un'istantanea semantica PDFium stabile sia come baseline di confronto sia come primo output completo
Ogni commit acquisisce lo stato corrente, risolve gli oggetti classici, ibridi, xref-stream e object-stream attivi, poi confronta la generazione degli oggetti e i byte esatti del corpo
Solo gli oggetti indiretti modificati o nuovi vengono scritti dopo l'output precedente, seguiti dalla revisione xref e trailer più piccola richiesta
Una sorgente con xref classico continua con tabelle xref classiche, mentre una sorgente con xref-stream continua con xref stream auto-indicizzati
Se nulla è cambiato, l'output precedente viene restituito byte per byte, nessuna revisione viene aggiunta e RevisionCount non avanza
L'overload con file scrive un file temporaneo fratello, sostituisce la destinazione atomicamente e ripristina lo stato della sessione se la scrittura o la sostituzione fallisce
AllowSignedDocument non sia True; il permesso esplicito non valida la policy DocMDP o FieldMDPEPdfErrorCompressed, così il confronto degli oggetti resta stabile
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;