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 producerar en sanerad PDF-kopia i en enda revision som tar bort aktiva innehållsvektorer från dokumentkatalogen och därefter valfritt kör en nåbarhetsrensning för att eliminera föräldralösa objekt från filen
Tvåstegspipelinen river först katalogposter
(/OpenAction, /AA, /Names,
/AF,
/AcroForm, /Metadata) via
StripDictionaryEntries som en inkrementell uppdatering och
kör därefter PruneUnreachablePdfStream för att skriva om filen som
en enda ren klassisk revision
Katalog- och traileruppdateringen använder gles xref-uppslagning, tolkarfönster på högst 1 MiB och 64 KiB-intervallkopiering på den normala xref-vägen i stället för att materialisera hela den sparade PDF:en i en enda byte-array
När rensning är aktiverad är arbetsytan mellanlagring en
TPdfRandomAccessStore styrd av
SaveMemoryLimit och SaveTemporaryDirectory.
Dess toppminne och spilltillstånd ingår i
LastSaveLargestMemoryBuffer och
LastSaveSpillCount
Varje rivflagga är oberoende.
TPdfSanitiseOptions.Default aktiverar hela säkerhetsprofilen:
StripOpenAction,
StripCatalogActions, StripNames,
StripAssociatedFiles, plus
RemoveUnreachable-rensning. StripAcroForm
och StripMetadata har standard False,
eftersom de tar bort formulärfält och metadata som anropare kan vilja
behålla
Utdata är alltid en enda revision utan inkrementell
historik när RemoveUnreachable=True
Options — TPdfSanitiseOptions-post; använd Default för standardssäkerhetsprofilenReport — tar emot antal rivna poster, antal rensade objekt, byte-antal och eventuella felStripNames tar bort hela /Names-dictionaryn inklusive /JavaScript, /EmbeddedFiles, /Dests och /AP; detta är medvetet aggressivt för saneringStripAssociatedFiles tar bort katalognivåns /AF-post och har standard TrueStripMetadata tar bort både katalogens /Metadata (XMP) och trailerns /Info/AA och /A rivs inte i denna metod; bara aktivt innehåll på katalognivå tas bortTryReadTrailerInfo-vakten/AcroForm tar bort signaturfält och ogiltigförklarar befintliga signaturer
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;