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;
SaveAsSanitised produceert een gesaniseerde single-revision-PDF-kopie die active-content-vectoren uit de documentcatalogus verwijdert en daarna optioneel een reachability prune uitvoert om orphaned objecten uit de file body te elimineren
De tweefasige pijplijn stript eerst catalog-ingangen
(/OpenAction, /AA, /Names,
/AF,
/AcroForm, /Metadata) via
StripDictionaryEntries als incrementele update en
draait daarna PruneUnreachablePdfStream om het bestand
als één schone klassieke revisie te herschrijven
De catalog- en trailer-update gebruikt sparse xref-lookup, parserwindows van hooguit 1 MiB en het kopiëren van 64 KiB-bereiken op het normale xref-pad in plaats van de complete opgeslagen PDF in één byte-array te materialiseren
Wanneer pruning is ingeschakeld is de tussenliggende werkruimte
een TPdfRandomAccessStore die door
SaveMemoryLimit en SaveTemporaryDirectory
wordt gestuurd; het piekgeheugen en de spill-status daarvan zijn
opgenomen in LastSaveLargestMemoryBuffer en
LastSaveSpillCount
Elke strip-vlag is onafhankelijk.
TPdfSanitiseOptions.Default schakelt het volledige
securityprofiel in: StripOpenAction,
StripCatalogActions, StripNames,
StripAssociatedFiles, plus de
RemoveUnreachable-prune. StripAcroForm
en StripMetadata staan standaard op False
omdat ze formuliervelden en metadata verwijderen die aanroepers
mogelijk willen houden
De uitvoer is altijd één revisie zonder incrementele
geschiedenis wanneer RemoveUnreachable=True
Options — TPdfSanitiseOptions-record; gebruik Default voor het standaard securityprofielReport — ontvangt het aantal gestripte ingangen, gesnoeide objecten, byte-aantallen en eventuele foutenStripNames verwijdert de volledige /Names-dictionary, inclusief /JavaScript, /EmbeddedFiles, /Dests en /AP; dit is bewust agressief voor saniseringStripAssociatedFiles verwijdert de catalog-level /AF-ingang en staat standaard op TrueStripMetadata verwijdert zowel catalog /Metadata (XMP) als trailer /Info/AA- en /A-acties worden in deze methode niet gestript; alleen catalog-level active content wordt verwijderdTryReadTrailerInfo-guard/AcroForm verwijdert signature-velden en maakt bestaande signaturen ongeldig
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;