PDFium Delphi Component Docs

SaveAsRedacted Método

Componente: TPdf  ·  Unidade: PDFium
Aplica anotações de redação PDF a um snapshot isolado e grava um resultado limpo de revisão única sem modificar o documento carregado

Syntax

function SaveAsRedacted(Stream: TStream;
  const Options: TPdfRedactionOptions;
  out Report: TPdfRedactionReport): Boolean; overload;

function SaveAsRedacted(const FileName: string;
  const Options: TPdfRedactionOptions;
  out Report: TPdfRedactionReport): Boolean; overload;

Description

SaveAsRedacted captura o documento atual em um snapshot isolado de acesso aleatório, abre esse snapshot como um TPdf separado e processa todos os retângulos de anotação /Redact

As opções padrão habilitam tanto PreservePartialObjects quanto PreserveComplexObjects para reter geometria segura suportada; este perfil delimitado reconstrói texto a partir de fragmentos de caracteres retidos, recorta caminhos preenchidos sólidos e limpa pixels que cruzam em imagens afins

Quando existe qualquer anotação de redação, o perfil detalhado expande cada instância de Form XObject em todas as páginas, incluindo páginas não redigidas, antes de aplicar as redações; as transformações de instância são compostas e os streams Form compartilhados originais podem então ser removidos pela poda de recursos

Defina PreservePartialObjects := False para remover objetos que cruzam por inteiro, ou mantenha-o habilitado e defina PreserveComplexObjects := False para usar o perfil de fragmentação mais simples de texto, retângulo alinhado aos eixos e imagem alinhada aos eixos; as checagens de segurança da origem se aplicam aos três perfis

O método remove todas as anotações de redação, remove opcionalmente outras anotações que cruzam os retângulos, remove anotações de anexo de arquivo nas páginas redigidas, exclui anexos incorporados nativos e executa a regravação sanitizada com o /AF do catálogo, conteúdo ativo, formulários, metadados e objetos inalcançáveis removidos

Depois que o conteúdo da página é regenerado, uma poda precisa de recursos varre escopos de recursos de página, Form XObject, pattern, aparência, herdados e aninhados, e remove apenas nomes não usados antes que os objetos inalcançáveis sejam descartados

A saída, portanto, tem uma revisão limpa única e não preserva revisões anteriores recuperáveis, enquanto o documento de origem carregado permanece inalterado

Options

As opções de Form, caminho, imagem, geometria e tolerância acima são validadas e usadas pelo perfil detalhado; elas não elevam os orçamentos independentes de inspeção da origem

Report

TPdfRedactionReport retorna RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, as contagens de bytes, o SanitiseReport e o ResourcePruneReport aninhados, Succeeded e ErrorMessage

O trabalho detalhado adiciona ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount e GeometryOperationCount; CurveTolerancePdfPoints registra a tolerância configurada após um processamento bem-sucedido

ScannedFormChildCount conta objetos nativos visitados durante a expansão, incluindo instâncias raiz de Form, e GeneratedPathPointCount inclui pontos intermediários de recorte, bem como pontos de curva achatados

MaskedImagePixelCount conta pixels cujas amostras completas de cor e alpha foram limpas, enquanto PreservedFragmentCount conta objetos de substituição em vez de pixels retidos individuais ou contornos de polígono; contadores de processamento em caso de falha podem ser parciais e não implicam uma saída confirmada

Security boundary

Example

var
  Options: TPdfRedactionOptions;
  Report: TPdfRedactionReport;
begin
  Options := TPdfRedactionOptions.Default;
  Options.FillColor := clBlack;
  if not Pdf1.SaveAsRedacted('C:\redacted.pdf', Options, Report) then
    raise Exception.Create(Report.ErrorMessage);
end;

See Also

SaveAsSanitised, SaveAsReachable, CreateAnnotation