PDFium Delphi Component Docs

SaveAsSanitised Método

Componente: TPdf  ·  Unidad: PDFium
Escribe una copia limpia de una sola revisión mediante actualizaciones acotadas del catálogo y el 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 una sola revisión 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 elimina primero las entradas del catálogo (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) mediante StripDictionaryEntries como actualización incremental, y luego ejecuta PruneUnreachablePdfStream para reescribir el archivo como una única revisión clásica limpia

La actualización del catálogo y el 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 un solo arreglo de bytes

Cuando la poda está habilitada, el área de trabajo intermedia es un TPdfRandomAccessStore gobernado por SaveMemoryLimit y SaveTemporaryDirectory. Su memoria máxima y su estado de desbordamiento 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 son False de forma predeterminada porque eliminan campos de formulario y metadatos que los llamadores pueden querer conservar

La salida siempre es 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