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;
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
FillColor — color opaco de reemplazo, predeterminado clBlackRemoveIntersectingAnnotations — elimina las anotaciones que no son de redacción cuando sus rectángulos se superponen con uno de redacción, predeterminado TrueMaxPageObjects — máximo de objetos de página de nivel superior explorados entre las páginas redactadas, predeterminado 1000000PreservePartialObjects — conserva los fragmentos admitidos de texto, trazados e imágenes que no se intersectan, predeterminado TrueMaxSplitObjects — máximo de fragmentos seguros creados en toda la operación, predeterminado 1000000PreserveComplexObjects — habilita la expansión acotada de Form, el recorte de trazados de relleno sólido y el borrado de píxeles en imágenes afines cuando también está habilitado PreservePartialObjects, predeterminado TrueMaxFormDepth — profundidad máxima de expansión de Form anidados, predeterminado 32, rango admitido 1..64MaxPathPoints — limita los segmentos de un trazado afectado y los puntos de trazados generados acumulados, predeterminado 262144, rango admitido 1..1000000MaxImagePixels — píxeles decodificados acumulados procesados para reemplazos detallados de imágenes, predeterminado 16777216, rango admitido 1..67108864MaxGeometryOperations — trabajo geométrico detallado acumulado, incluidas las exploraciones de anotaciones y texto, la subdivisión y el recorte de trazados y las pruebas de intersección de píxeles, predeterminado 67108864, rango admitido 1..1000000000CurveTolerancePdfPoints — tolerancia de aplanado de curvas cúbicas en el espacio de página, predeterminada 0.01, rango finito admitido 0.0001..0.1; los cortes se amplían por esta tolerancia más 0.001 puntos PDF, por lo que puede eliminarse un pequeño margen de seguridad adicionalLas 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
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
0.001 puntos PDF; RGB y alpha se ponen en cero, y después una superposición opaca de FillColor cubre el rectángulo/ActualText o /Alt, XFA y semántica de capas de contenido opcional, incluidos /OCProperties, /OCG y /OCMD; este método no reconstruye la estructura lógica ni conserva esa semántica ocultaTr desconocidos, y pintura scn/SCN con patrones o espacios de color especiales; los flujos de contenido inspeccionados admitidos no tienen filtro o usan un único filtro con nombre /FlateDecode256 MiB, cada cuerpo de objeto activo a 64 MiB, el total de cuerpos activos a 256 MiB, los flujos de objetos decodificados a 64 MiB cada uno y 256 MiB en total, y las posiciones de objetos a 1000000; la decodificación del contenido inspeccionado tiene límites adicionales de 32 MiB por flujo y 64 MiB en total/AF del catálogo, el árbol /Names, los adjuntos incrustados nativos y las anotaciones de archivos adjuntos de las páginas redactadas; las entradas arbitrarias de archivos asociados anidadas en diccionarios de estructura no relacionados quedan fuera de la garantía explícita del método/Redact también produce el perfil de seguridad limpiado de una sola revisión
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;