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 activan PreservePartialObjects y PreserveComplexObjects para conservar la geometría segura admitida; este perfil acotado reconstruye texto a partir de fragmentos de caracteres conservados, recorta trazados con relleno sólido y borra los píxeles que intersectan en imágenes afines
Si existe alguna anotación de redaction, el perfil detallado expande todas las instancias Form XObject de todas las páginas, incluidas las páginas sin redaction, antes de aplicar las eliminaciones; se componen las transformaciones de instancia y la poda de recursos puede eliminar después los flujos Form compartidos originales
Active PreservePartialObjects := False para eliminar completos los objetos que intersectan, o manténgalo activado y use PreserveComplexObjects := False para el perfil más sencillo de fragmentación de texto, rectángulos alineados con los ejes e imágenes alineadas con los ejes; las comprobaciones de seguridad del origen se aplican a los tres perfiles
El método elimina todas las anotaciones de redaction, puede eliminar otras anotaciones que intersecten, elimina las anotaciones de adjuntos en páginas redactadas, borra los adjuntos incrustados nativos y ejecuta la reescritura saneada que retira /AF del catálogo, contenido activo, formularios, metadatos y objetos inalcanzables
Después de regenerar el contenido de la página, una poda precisa de recursos examina los ámbitos de recursos de página, Form XObject, patrón, apariencia, herencia 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 origen cargado permanece intacto; una semántica de origen o una geometría detallada no admitidas abortan la operación en vez de producir una redaction parcial
FillColor — color de sustitución opaco, por defecto clBlackRemoveIntersectingAnnotations — elimina las anotaciones que no son de tachado cuyos rectángulos se superponen a un rectángulo de tachado, True de forma predeterminadaMaxPageObjects — número máximo de objetos de página de nivel superior examinados en las páginas tachadas, 1000000 de forma predeterminadaPreservePartialObjects — conserva los fragmentos de texto, ruta e imagen soportados que no se intersectan, True de forma predeterminadaMaxSplitObjects — número máximo de fragmentos seguros creados en toda la operación, 1000000 de forma predeterminadaPreserveComplexObjects — activa la expansión Form acotada, el recorte de trazados con relleno sólido y el borrado de píxeles de imágenes afines cuando también está activo PreservePartialObjects, por defecto TrueMaxFormDepth — profundidad máxima de expansión Form anidada, por defecto 32, rango admitido 1..64MaxPathPoints — limita los segmentos de un trazado afectado y los puntos de trazado generados acumulados, por defecto 262144, rango admitido 1..1000000MaxImagePixels — píxeles decodificados acumulados procesados para sustituciones detalladas de imágenes, por defecto 16777216, rango admitido 1..67108864MaxGeometryOperations — trabajo geométrico detallado acumulado, incluido el examen de anotaciones y texto, la subdivisión y el recorte de trazados y las pruebas de intersección de píxeles, por defecto 67108864, rango admitido 1..1000000000CurveTolerancePdfPoints — tolerancia de aplanado cúbico en el espacio de página, por defecto 0.01, rango finito admitido 0.0001..0.1; los cortes de trazados se amplían con esa tolerancia más 0.001 puntos PDF, de modo que puede retirarse un pequeño margen seguro adicionalLas opciones anteriores de Form, trazados, imágenes, geometría y tolerancia se validan y 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 recuentos de bytes, los SanitiseReport y ResourcePruneReport anidados, Succeeded y ErrorMessage
El trabajo detallado añade ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount y GeometryOperationCount; CurveTolerancePdfPoints registra la tolerancia configurada después de un procesamiento correcto
ScannedFormChildCount cuenta los objetos nativos visitados durante la expansión, incluidas las instancias Form raíz, y GeneratedPathPointCount incluye puntos intermedios de recorte y puntos de curvas aplanadas
MaskedImagePixelCount cuenta los píxeles cuyos componentes completos de color y alfa se han borrado, mientras que PreservedFragmentCount cuenta objetos de sustitución, no píxeles conservados ni contornos de polígonos; los contadores de una operación fallida pueden ser parciales y no implican una salida confirmada
0.001 puntos PDF; RGB y alfa se ponen a cero y una superposición opaca FillColor cubre después el rectángulo de redaction/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 de patrones o espacios de color especiales scn/SCN; los flujos de contenido inspeccionados admitidos no tienen filtro o usan un único filtro con nombre /FlateDecode256 MiB, los cuerpos individuales de objetos activos a 64 MiB, los cuerpos activos totales 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 de contenido inspeccionado tiene límites adicionales de 32 MiB por flujo y 64 MiB en total/AF, el árbol /Names, los adjuntos incrustados nativos y las anotaciones de adjunto de archivo en las páginas tachadas se eliminan; las entradas arbitrarias de archivos asociados anidadas en diccionarios de estructura no relacionados quedan fuera de la garantía explícita de este método/Redact también produce el perfil de seguridad saneado 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;