PDFium Delphi Component Docs

SaveAsSanitised Método

Componente: TPdf  ·  Unidad: PDFium
Escribe una copia limpia de revisión única mediante actualizaciones acotadas del catálogo y del trailer, y luego poda los objetos inalcanzables para que los cuerpos huérfanos de JavaScript, acciones, adjuntos y metadatos desaparezcan del cuerpo del archivo

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 produce una copia PDF saneada de revisión única que elimina los vectores de contenido activo del catálogo del documento y luego ejecuta opcionalmente una poda de alcanzabilidad para eliminar los objetos huérfanos del cuerpo del archivo

La canalización de dos etapas primero elimina las entradas del catálogo (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) mediante StripDictionaryEntries como actualización incremental, y después ejecuta PruneUnreachablePdfStream para reescribir el archivo como una única revisión clásica limpia

La actualización del catálogo y del trailer usa búsqueda xref dispersa, ventanas de análisis de como máximo 1 MiB y copia de rangos de 64 KiB en la ruta xref normal, en lugar de materializar el PDF guardado completo en una sola matriz de bytes

Cuando la poda está habilitada, el espacio de trabajo intermedio es un TPdfRandomAccessStore gobernado por SaveMemoryLimit y SaveTemporaryDirectory Su memoria máxima y su estado de vuelco se incluyen en LastSaveLargestMemoryBuffer y LastSaveSpillCount

Cada marca de eliminación es independiente TPdfSanitiseOptions.Default habilita el perfil de seguridad completo: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, más la poda RemoveUnreachable. StripAcroForm y StripMetadata toman False de forma predeterminada porque eliminan campos de formulario y metadatos que los llamadores pueden querer conservar

La salida es siempre una única revisión sin historial incremental cuando 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