PDFium Delphi Component Docs

SaveAsSanitised Metodo

Componente: TPdf  ·  Unità: PDFium
Scrive una copia pulita a revisione unica tramite aggiornamenti limitati di catalogo e trailer, quindi pota gli oggetti non raggiungibili così che i corpi orfani di JavaScript, azioni, allegati e metadati scompaiano dal corpo del file

Syntax

function SaveAsSanitised(Stream: TStream;
  const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport): Boolean; overload;

function SaveAsSanitised(const FileName: string;
  const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport): Boolean; overload;

Description

SaveAsSanitised produce una copia PDF sanitizzata a revisione unica che rimuove i vettori di contenuto attivo dal catalogo del documento e poi esegue facoltativamente una potatura di raggiungibilità per eliminare gli oggetti orfani dal corpo del file

La pipeline a due stripe rimuove prima le voci del catalogo (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) tramite StripDictionaryEntries come aggiornamento incrementale, quindi esegue PruneUnreachablePdfStream per riscrivere il file come una singola revisione classica pulita

L'aggiornamento di catalogo e trailer usa ricerca xref sparsa, finestre del parser non maggiori di 1 MiB e copia per intervalli di 64 KiB sul percorso xref normale invece di materializzare l'intero PDF salvato in un unico array di byte

Quando la potatura è abilitata, l'area di lavoro intermedia è un TPdfRandomAccessStore governato da SaveMemoryLimit e SaveTemporaryDirectory Il suo picco di memoria e il suo stato di spill sono inclusi in LastSaveLargestMemoryBuffer e LastSaveSpillCount

Ogni flag di rimozione è indipendente TPdfSanitiseOptions.Default abilita il profilo di sicurezza completo: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, più la potatura RemoveUnreachable. StripAcroForm e StripMetadata sono predefiniti a False perché rimuovono i campi dei moduli e i metadati che i chiamanti potrebbero voler conservare

L'output è sempre una revisione singola senza cronologia incrementale quando RemoveUnreachable=True

Parameters

Remarks

Example

var
  Options: TPdfSanitiseOptions;
  Report: TPdfSanitiseReport;
begin
  Pdf1.FileName := 'C:\Untrusted.pdf';
  Pdf1.Active := True;
  Options := TPdfSanitiseOptions.Default;
  Pdf1.SaveAsSanitised('C:\Sanitised.pdf', Options, Report);
end;

See Also

SaveAsReachable, SaveAs, AuditActiveContent