PDFium Delphi Component Docs

SaveAsSanitised metod

Component: TPdf  ·  Unit: PDFium
Skriver en ren kopia i en enda revision via avgränsade katalog- och traileruppdateringar och rensar därefter onåbara objekt så att föräldralösa JavaScript-, åtgärds-, bilage- och metadatadelar försvinner från filen

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 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

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