PDFium Delphi Component Docs

Método SaveAsRedacted

Componente: TPdf  ·  Unidad: PDFium
Aplica las anotaciones de redacción PDF a una instantánea aislada y escribe una única revisión limpia sin modificar el documento cargado

Sintaxis

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;

Descripción

SaveAsRedacted captura el documento actual en una instantánea aislada de acceso aleatorio, abre esa instantánea como un TPdf separado y procesa cada rectángulo de anotación /Redact

Las opciones predeterminadas habilitan tanto PreservePartialObjects como PreserveComplexObjects para conservar la geometría segura admitida; este perfil acotado reconstruye el texto a partir de fragmentos de caracteres conservados, recorta trazados de relleno sólido y borra los píxeles que se intersectan en imágenes con transformación afín

Cuando existe cualquier anotación de redacción, el perfil detallado expande cada instancia de Form XObject de todas las páginas, incluidas las páginas sin redacción, antes de aplicar los recortes; se componen las transformaciones de cada instancia y después la depuración de recursos puede eliminar los flujos Form compartidos originales

Establezca PreservePartialObjects := False para eliminar los objetos completos que se intersecten, o manténgalo habilitado y establezca PreserveComplexObjects := False para usar el perfil más sencillo de fragmentación de texto, rectángulos e imágenes alineados con los ejes; las comprobaciones de seguridad del origen se aplican a los tres perfiles

El método elimina todas las anotaciones de redacción, opcionalmente elimina otras anotaciones que se crucen, elimina las anotaciones de adjunto de archivo en las páginas redactadas, borra los adjuntos nativos incorporados y ejecuta la reescritura saneada con el /AF del catálogo, el contenido activo, los formularios, los metadatos y los objetos inalcanzables eliminados

Después de que el contenido de la página se regenera, una poda de recursos precisa examina los ámbitos de recursos de páginas, Form XObject, patrones, apariencias, herencias y anidados, y elimina solo los nombres sin usar antes de descartar los objetos inalcanzables

La salida tiene una sola revisión limpia, sin revisiones anteriores del documento, y el documento de origen cargado permanece sin cambios; la semántica del origen o la geometría detallada no admitidas abortan la operación en lugar de producir un resultado parcialmente redactado

Opciones

Las opciones de Form, trazados, imágenes, geometría y tolerancia anteriores se validan y se usan en el perfil detallado; no aumentan los presupuestos independientes de inspección del origen

Informe

TPdfRedactionReport devuelve RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, los conteos de bytes, el SanitiseReport y el ResourcePruneReport anidados, Succeeded y ErrorMessage

El trabajo detallado agrega ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount y GeometryOperationCount; CurveTolerancePdfPoints registra la tolerancia configurada cuando el procesamiento termina correctamente

ScannedFormChildCount cuenta los objetos nativos visitados durante la expansión, incluidas las instancias Form raíz, y GeneratedPathPointCount incluye tanto los puntos intermedios de recorte como los puntos de las curvas aplanadas

MaskedImagePixelCount cuenta los píxeles cuyas muestras completas de color y alpha se borraron, mientras que PreservedFragmentCount cuenta objetos de reemplazo y no píxeles conservados ni contornos individuales; ante un error, los contadores pueden ser parciales y no implican que se haya confirmado una salida

Límite de seguridad

Ejemplo

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;

Ver también

SaveAsSanitised, SaveAsReachable, CreateAnnotation, FPdfRedaction geometry helpers