PDFium Delphi Component Docs

Incremental save session

Componente: TPdf  ·  Unità: PDFium
Aggiunge solo gli oggetti indiretti modificati o nuovi preservando ogni byte di output precedente

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;

AllowSignedDocumentConsente esplicitamente una sessione su un documento firmato; il default la rifiuta
StreamTStream che riceve il PDF accumulato completo dopo questo commit
FileNamePercorso di output sostituito solo dopo che un file temporaneo fratello riesce
InfoStatistiche per commit restituite dopo che la scrittura di destinazione riesce

Commit Information

ChangedObjectCountNumero di oggetti indiretti modificati o nuovi aggiunti da questo commit
AppendedByteCountByte aggiunti dopo il prefisso esatto dell'output precedente
OutputByteCountByte totali nell'output completo restituito da questo commit
RevisionCountNumero di revisioni non vuote committate nella sessione corrente

Description

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

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