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 producerer en saniteret enkeltrevisions-PDF-kopi, der fjerner aktive indholdsvektorer fra dokumentkataloget og derefter valgfrit kører en reachability-beskæring for at eliminere forældreløse objekter fra filkroppen
To-trins-pipelinen stripper først katalogposter
(/OpenAction, /AA, /Names,
/AF,
/AcroForm, /Metadata) via
StripDictionaryEntries som en inkrementel opdatering og
kører derefter PruneUnreachablePdfStream for at omskrive filen som
én ren klassisk revision
Katalog- og trailer-opdateringen bruger sparse xref-opslag, parservinduer på højst 1 MiB og 64 KiB range-kopiering på den normale xref-sti i stedet for at materialisere den komplette gemte PDF i én byte-array
Når beskæring er slået til, er det mellemliggende workspace en
TPdfRandomAccessStore styret af
SaveMemoryLimit og SaveTemporaryDirectory
Dens peak-hukommelse og spill-tilstand indgår i
LastSaveLargestMemoryBuffer og
LastSaveSpillCount
Hvert strip-flag er uafhængigt.
TPdfSanitiseOptions.Default aktiverer den fulde sikkerhedsprofil: StripOpenAction,
StripCatalogActions, StripNames,
StripAssociatedFiles plus
RemoveUnreachable-beskæring. StripAcroForm
og StripMetadata er som standard False,
fordi de fjerner formularfelter og metadata, som kaldere måske
vil beholde
Outputtet er altid én revision uden inkrementel
historik, når RemoveUnreachable=True
Options — TPdfSanitiseOptions-record; brug Default til standard-sikkerhedsprofilenReport — modtager strippet post-antal, beskåret objektantal, byte-antal og eventuelle fejlStripNames fjerner hele /Names-ordbogen inklusive /JavaScript, /EmbeddedFiles, /Dests og /AP; det er bevidst aggressivt til saniteringStripAssociatedFiles fjerner katalogniveau-/AF-posten og er som standard TrueStripMetadata fjerner både katalog-/Metadata (XMP) og trailer-/Info/AA- og /A-actions strippes ikke i denne metode; kun katalogniveau-aktivt indhold fjernesTryReadTrailerInfo-guard/AcroForm fjerner signaturfelter og invaliderer eksisterende 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;