PDFium Delphi Component Docs

SaveAsSanitised Método

Componente: TPdf  ·  Unidade: PDFium
Grava uma cópia limpa de revisão única por meio de atualizações limitadas de catálogo e trailer e, em seguida, poda objetos inalcançáveis para que corpos órfãos de JavaScript, ações, anexos e metadados desapareçam do corpo do arquivo

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 produz uma cópia PDF sanitizada de revisão única que remove os vetores de conteúdo ativo do catálogo do documento e depois executa opcionalmente uma poda de alcançabilidade para eliminar objetos órfãos do corpo do arquivo

O pipeline de dois estágios primeiro remove entradas do catálogo (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) por meio de StripDictionaryEntries como uma atualização incremental e, em seguida, executa PruneUnreachablePdfStream para regravar o arquivo como uma única revisão clássica limpa

A atualização de catálogo e trailer usa busca esparsa de xref, janelas de parser de no máximo 1 MiB e cópia de intervalos de 64 KiB no caminho normal de xref, em vez de materializar o PDF salvo completo em um único array de bytes

Quando a poda está habilitada, o espaço de trabalho intermediário é um TPdfRandomAccessStore governado por SaveMemoryLimit e SaveTemporaryDirectory Seu pico de memória e estado de despejo são incluídos em LastSaveLargestMemoryBuffer e LastSaveSpillCount

Cada flag de remoção é independente TPdfSanitiseOptions.Default habilita o perfil de segurança completo: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, além da poda RemoveUnreachable. StripAcroForm e StripMetadata têm padrão False porque removem campos de formulário e metadados que os chamadores podem querer manter

A saída é sempre uma revisão única sem histórico incremental quando 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