PDFium Delphi Component Docs

SaveAsSanitised metoda

Komponenta: TPdf  ·  Jednotka: PDFium
Zapíše čistou jednorevizní kopii prostřednictvím ohraničených aktualizací katalogu a traileru a poté prořezá nedosažitelné objekty, takže z těla souboru zmizí osiřelé objekty JavaScriptu, akcí, příloh a metadat

Syntaxe

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;

Popis

SaveAsSanitised vytvoří sanitizovanou jednorevizní kopii PDF, která z dokumentového katalogu odstraní vektory aktivního obsahu a poté volitelně spustí prořez dosažitelnosti, jež z těla souboru vyřadí osiřelé objekty

Dvoustupňová pipeline nejprve zbaví katalogové položky (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) pomocí StripDictionaryEntries jako přírůstkové aktualizace a poté spustí PruneUnreachablePdfStream, který přepíše soubor do jedné čisté klasické revize

Aktualizace katalogu a traileru používá řídké vyhledávání v xref, parserová okna největší 1 MiB a kopírování rozsahů po 64 KiB na běžné xref cestě místo materializace kompletního ukládaného PDF v jednom bajtovém poli

Když je prořezávání zapnuté, mezilehlým pracovním prostorem je TPdfRandomAccessStore řízený pomocí SaveMemoryLimit a SaveTemporaryDirectory Jeho špičková paměť a stav rozlití se zahrnou do LastSaveLargestMemoryBuffer a LastSaveSpillCount

Každý příznak odstraňování je nezávislý TPdfSanitiseOptions.Default zapíná plný bezpečnostní profil: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles plus prořez RemoveUnreachable StripAcroForm a StripMetadata mají výchozí False proto, že odstraňují formulářová pole a metadata, kterou mohou volající chtít ponechat

Výstup je vždy jediná revize bez přírůstkové historie, když je RemoveUnreachable=True

Parametry

Poznámky

Příklad

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;

Viz také

SaveAsReachable, SaveAs, AuditActiveContent