PDFium Delphi Component Docs

Utilidades geométricas acotadas para la censura

FPdfRedaction aporta inspección conservadora del origen y operaciones geométricas para TPdf.SaveAsRedacted; el método de alto nivel proporciona la transacción, tratamiento de anotaciones, overlays opacos, regeneración de contenido, saneamiento y eliminación de recursos sin uso

Los helpers modifican objetos nativos en la copia transaccional aislada del llamador y lanzan EPdfRedactionGeometry ante geometría no compatible o límites agotados; por sí solos no realizan una exportación segura completa

Declaraciones 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 y geometría compatible

Todos los rectángulos de redaction y tolerancias de curva usan puntos del espacio de usuario PDF; los puntos del path se transforman al espacio de página antes del recorte, y ObjectIndex es el índice nativo original con base cero que mantiene el orden de dibujo

La expansión y geometría parcial rechazan transparencia o blend states, tipos de hijos no compatibles, matrices singulares, rellenos con patrón y clips complejos o no redundantes; un clip rectangular redundante compatible debe contener todos los límites del objeto

Opciones e informe acumulado

OpciónPredeterminadoSignificado
MaxFormDepth32Profundidad de expansión de Forms anidados
MaxObjects1000000Límites de enumeración de página y acumulación de hijos expandidos
MaxPathSegments262144Segmentos de entrada por path y puntos generados acumulados
MaxFragments1000000Regiones rectangulares conservadas y fragmentos de reemplazo acumulados
MaxImagePixels16777216Píxeles de imagen decodificados procesados acumulados
MaxGeometryOperations67108864Trabajo acumulado de geometría e intersección de píxeles
CurveTolerance0.01Tolerancia de aproximación cúbica en puntos PDF

Inicialice las opciones con TPdfRedactionGeometryOptions.Default y ponga el informe a cero una vez antes de la transacción; mantenga el mismo informe entre llamadas para acumular puntos, píxeles, fragmentos y presupuestos de operaciones

ExpandedFormCount y ScannedChildCount describen la expansión; el recuento de visitas incluye instancias Form raíz e hijos; ClippedPathCount, FlattenedCurveCount y GeneratedPointCount describen paths e incluyen puntos intermedios de recorte; MaskedImageCount, ScannedPixelCount, MaskedPixelCount y PixelIntersectionTestCount describen las imágenes

FragmentCount cuenta objetos de reemplazo, no contornos poligonales ni píxeles, y GeometryOperationCount acumula el trabajo limitado; un informe tras una excepción puede describir trabajo parcial sobre la copia transaccional descartada

Inspección del origen y alcance de la exportación

ValidateDetailedRedactionSource inspecciona objetos activos y contenido decodificado antes de modificar; TPdf.SaveAsRedacted lo invoca en todos los perfiles, incluida eliminación completa de objetos y el perfil parcial sencillo

El perfil actual no reconstruye Tagged PDF, no conserva transparencia arbitraria, no admite trazos o recortes arbitrarios ni promete conservar sin pérdida imágenes codificadas; la salida segura exige quitar flujos originales y recursos sin uso tras regenerar, como hace TPdf.SaveAsRedacted

Los llamadores directos deben aportar una copia aislada, validar capacidades nativas y límites positivos finitos, descartar la copia si falla, regenerar el contenido modificado y completar saneamiento y limpieza de recursos antes de exportar

Véase también

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress