PDFium Delphi Component Docs

Auxiliares de geometria de redaction com limites definidos

FPdfRedaction disponibiliza inspeção conservadora da origem e operações de geometria usadas pelo TPdf.SaveAsRedacted; o método de nível mais alto fornece a transação, o processamento de anotações, as sobreposições opacas, a regeneração de conteúdo, a sanitização e a poda de recursos

Os auxiliares mutam objetos nativos na cópia isolada da transação do chamador e geram EPdfRedactionGeometry perante geometria não suportada ou orçamentos esgotados; por si sós, não realizam uma exportação segura completa

Declarações públicas

type
  EPdfRedactionGeometry = class(Exception);
  TPdfRedactionGeometryOptions = record
    MaxFormDepth, MaxObjects, MaxPathSegments, MaxFragments: Integer;
    MaxImagePixels, MaxGeometryOperations: Int64;
    CurveTolerance: Double;
    class function Default: TPdfRedactionGeometryOptions; static;
  end;
  TPdfRedactionGeometryReport = record
    ExpandedFormCount, ScannedChildCount, ClippedPathCount: Integer;
    FlattenedCurveCount, GeneratedPointCount, FragmentCount: Integer;
    MaskedImageCount: Integer;
    ScannedPixelCount, MaskedPixelCount, PixelIntersectionTestCount: Int64;
    GeometryOperationCount: Int64;
  end;

procedure ValidateDetailedRedactionSource(Source: TStream);
procedure ValidateDetailedRedactionText(PageObject: FPDF_PAGEOBJECT);
procedure ExpandRedactionForms(Page: FPDF_PAGE;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure ClipRedactionPath(Page: FPDF_PAGE; PageObject: FPDF_PAGEOBJECT;
  ObjectIndex: Integer; const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure MaskRedactionImage(Document: FPDF_DOCUMENT; Page: FPDF_PAGE;
  PageObject: FPDF_PAGEOBJECT; ObjectIndex: Integer;
  const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);

Coordenadas e geometria suportada

Todos os retângulos de redaction e as tolerâncias de curva usam pontos do user space PDF; os pontos de caminho são transformados para o espaço da página antes do recorte, e ObjectIndex é o índice nativo original de base zero do objeto de página, usado para preservar a ordem de pintura

Expansão e geometria parcial recusam estados de transparência ou blending, tipos de filhos não suportados, matrizes singulares, preenchimentos com pattern e caminhos de clip complexos ou não redundantes; um clip retangular redundante suportado tem de conter os limites completos do objeto

Opções e relatório acumulado

OpçãoPredefiniçãoSignificado
MaxFormDepth32Profundidade de expansão de Forms aninhados
MaxObjects1000000Enumeração de páginas e limites acumulados de filhos expandidos
MaxPathSegments262144Segmentos de entrada por caminho e pontos acumulados de caminhos gerados
MaxFragments1000000Regiões retangulares retidas e fragmentos de substituição acumulados
MaxImagePixels16777216Píxeis acumulados de imagens descodificadas processadas
MaxGeometryOperations67108864Trabalho acumulado de geometria e de testes de interseção de píxeis
CurveTolerance0.01Tolerância de achatamento de cúbicas em pontos PDF

Inicialize as opções com TPdfRedactionGeometryOptions.Default e ponha o relatório a zero uma vez antes de uma transação; mantenha o mesmo relatório entre as chamadas dos auxiliares para que os pontos gerados, os píxeis de imagem, os fragmentos e os orçamentos de operações se acumulem

ExpandedFormCount e ScannedChildCount descrevem a expansão; a contagem de visitados inclui as instâncias raiz de Forms para além dos filhos; ClippedPathCount, FlattenedCurveCount e GeneratedPointCount descrevem o trabalho com caminhos, incluindo pontos intermédios de recorte; MaskedImageCount, ScannedPixelCount, MaskedPixelCount e PixelIntersectionTestCount descrevem o trabalho com imagens

FragmentCount conta objetos de substituição, e não contornos de polígonos nem píxeis, e GeometryOperationCount acumula o trabalho limitado dos auxiliares; um relatório deixado por uma exceção pode descrever trabalho parcial na cópia da transação descartada

Inspeção da origem e fronteira de exportação

ValidateDetailedRedactionSource inspeciona objetos ativos e conteúdo descodificado antes da mutação; TPdf.SaveAsRedacted invoca-o para cada perfil, incluindo a remoção de objetos inteiros e o perfil parcial mais simples

O perfil atual não reconstrói a estrutura de Tagged PDF, não preserva transparência arbitrária, não suporta strokes nem recortes arbitrários e não promete preservação sem perdas de imagens codificadas; a saída segura exige a remoção dos streams originais e dos recursos não usados após a regeneração, como feito pelo TPdf.SaveAsRedacted

Quem chamar diretamente tem de disponibilizar uma cópia isolada do documento, validar capacidades nativas e orçamentos finitos positivos, descartar a cópia em caso de falha, regenerar o conteúdo das páginas modificadas e completar a sanitização e a poda de recursos antes de exportar

Ver também

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress