PDFium Delphi Component Docs

SaveAsSanitised Methode

Komponente: TPdf  ·  Unit: PDFium
Schreibt eine saubere Ein-Revisions-Kopie über begrenzte Katalog- und Trailer-Updates und entfernt danach nicht erreichbare Objekte, sodass verwaiste JavaScript-, Aktions-, Anhang- und Metadaten-Körper aus dem Dateikörper verschwinden

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;

Beschreibung

SaveAsSanitised erzeugt eine bereinigte PDF-Kopie in einer einzigen Revision, die aktive Inhaltsvektoren aus dem Dokumentkatalog entfernt und danach optional ein Reachability-Ausdünnen ausführt, um verwaiste Objekte aus dem Dateikörper zu beseitigen

Die zweistufige Pipeline entfernt zuerst Katalog-Einträge (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) über StripDictionaryEntries als inkrementelles Update und führt anschließend PruneUnreachablePdfStream aus, um die Datei als eine einzige saubere klassische Revision neu zu schreiben

Das Katalog- und Trailer-Update verwendet spärliche Xref-Suche, Parser- Fenster von höchstens 1 MiB und 64-KiB-Bereichskopien auf dem normalen Xref-Pfad, statt das vollständige gespeicherte PDF in einem Byte-Array zu materialisieren

Wenn das Ausdünnen aktiviert ist, ist der Zwischen-Arbeitsbereich ein TPdfRandomAccessStore, der von SaveMemoryLimit und SaveTemporaryDirectory gesteuert wird Sein Speicherbedarf-Spitzenwert und sein Auslagerungszustand gehen in LastSaveLargestMemoryBuffer und LastSaveSpillCount ein

Jedes Strip-Flag ist unabhängig. TPdfSanitiseOptions.Default aktiviert das vollständige Sicherheits- profil: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles plus RemoveUnreachable-Ausdünnen. StripAcroForm und StripMetadata stehen standardmäßig auf False, weil sie Formularfelder und Metadaten entfernen, die Aufrufer möglicherweise behalten wollen

Die Ausgabe ist bei RemoveUnreachable=True stets eine einzelne Revision ohne inkrementellen Verlauf

Parameter

Hinweise

Beispiel

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;

Siehe auch

SaveAsReachable, SaveAs, AuditActiveContent