PDFium Delphi Component Docs

Método SaveAsSanitised

Componente: TPdf  ·  Unidade: PDFium
Escreve uma cópia limpa de revisão única através de atualizações limitadas do catálogo e do trailer, depois poda objetos inalcançáveis para que corpos órfãos de JavaScript, ações, anexos e metadados desapareçam do corpo do ficheiro

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

O SaveAsSanitised produz uma cópia PDF sanitizada de revisão única que remove 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 ficheiro

O pipeline de dois estágios primeiro remove entradas do catálogo (/OpenAction, /AA, /Names, /AF, /AcroForm, /Metadata) via StripDictionaryEntries como atualização incremental, depois executa PruneUnreachablePdfStream para reescrever o ficheiro como uma única revisão clássica limpa

A atualização do catálogo e do trailer usa pesquisa esparsa de xref, janelas de parser não maiores que 1 MiB e cópia de intervalos de 64 KiB no caminho xref normal em vez de materializar o PDF gravado completo num único array de bytes

Quando a poda está ativa, o espaço de trabalho intermédio é um TPdfRandomAccessStore governado por SaveMemoryLimit e SaveTemporaryDirectory. O seu pico de memória e o estado de transbordo ficam incluídos em LastSaveLargestMemoryBuffer e LastSaveSpillCount

Cada flag de remoção é independente. TPdfSanitiseOptions.Default ativa o perfil de segurança completo: StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, mais a poda RemoveUnreachable. StripAcroForm e StripMetadata são False por predefinição porque removem campos de formulário e metadados que os chamadores podem querer manter

A saída é sempre uma única revisão 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