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 acquisisce il documento corrente in uno snapshot isolato ad accesso casuale, apre quello snapshot come un TPdf separato ed elabora ogni rettangolo di annotazione /Redact
Le opzioni predefinite abilitano PreservePartialObjects e PreserveComplexObjects per mantenere geometria sicura supportata; questo profilo limitato ricostruisce testo dai frammenti di caratteri conservati, ritaglia tracciati con riempimento uniforme e azzera pixel intersecanti nelle immagini affini
Se esiste un'annotazione di redazione, il profilo dettagliato espande ogni istanza Form XObject di ogni pagina, anche senza redazioni, prima di applicare i tagli; compone le trasformazioni delle istanze e consente poi di eliminare gli stream Form condivisi originali tramite pulizia delle risorse
Impostare PreservePartialObjects := False per eliminare interi oggetti intersecanti, oppure mantenerlo abilitato e impostare PreserveComplexObjects := False per il profilo più semplice di frammentazione di testo, rettangoli e immagini allineati agli assi; i controlli di sicurezza della sorgente si applicano a tutti e tre i profili
Il metodo elimina tutte le annotazioni di redazione, opzionalmente quelle intersecanti, le annotazioni di allegato sulle pagine redatte e gli allegati nativi incorporati; esegue poi la riscrittura sanitizzata eliminando /AF del catalogo, contenuto attivo, form, metadati e oggetti irraggiungibili
Dopo la rigenerazione del contenuto delle pagine, una potatura precisa delle risorse analizza gli ambiti di risorse di pagina, Form XObject, pattern, appearance, ereditate e annidate e rimuove solo i nomi inutilizzati prima che gli oggetti non raggiungibili vengano scartati
L'output contiene una sola revisione pulita, senza revisioni precedenti, mentre la sorgente caricata resta invariata; semantica sorgente o geometria dettagliata non supportate interrompono l'operazione anziché produrre un risultato parzialmente redatto
FillColor — colore sostitutivo opaco, predefinito clBlackRemoveIntersectingAnnotations — rimuove le annotazioni non di redazione i cui rettangoli si sovrappongono a un rettangolo di redazione, predefinito TrueMaxPageObjects — numero massimo di oggetti di pagina di primo livello analizzati sulle pagine redatte, predefinito 1000000PreservePartialObjects — conserva i frammenti di testo, percorso e immagine supportati non intersecanti, predefinito TrueMaxSplitObjects — numero massimo di frammenti sicuri creati durante l'operazione, predefinito 1000000PreserveComplexObjects — abilita espansione limitata dei Form, clipping di tracciati riempiti uniformemente e azzeramento dei pixel di immagini affini se è abilitato anche PreservePartialObjects; predefinito TrueMaxFormDepth — profondità massima di espansione dei Form annidati, predefinita 32, intervallo accettato 1..64MaxPathPoints — limita segmenti di un tracciato interessato e punti generati cumulativi, predefinito 262144, intervallo accettato 1..1000000MaxImagePixels — pixel decodificati cumulativi elaborati per sostituzioni dettagliate, predefinito 16777216, intervallo accettato 1..67108864MaxGeometryOperations — lavoro geometrico dettagliato cumulativo, inclusi scansioni di annotazioni e testo, suddivisione e clipping dei tracciati e test di intersezione dei pixel, predefinito 67108864, intervallo accettato 1..1000000000CurveTolerancePdfPoints — tolleranza di approssimazione cubica nello spazio pagina, predefinita 0.01, intervallo finito accettato 0.0001..0.1; i tagli si espandono di questa tolleranza più 0.001 punti PDF, quindi può essere eliminato un piccolo margine sicuro aggiuntivoLe opzioni precedenti di Form, tracciati, immagini, geometria e tolleranza sono validate e usate dal profilo dettagliato; non aumentano i limiti indipendenti di ispezione della sorgente
TPdfRedactionReport restituisce RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, i conteggi dei byte, i report annidati SanitiseReport e ResourcePruneReport, Succeeded e ErrorMessage
Il lavoro dettagliato aggiunge ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount e GeometryOperationCount; CurveTolerancePdfPoints registra la tolleranza configurata dopo un'elaborazione riuscita
ScannedFormChildCount conta oggetti nativi visitati nell'espansione, comprese le istanze Form radice, e GeneratedPathPointCount include punti intermedi di clipping e punti delle curve approssimate
MaskedImagePixelCount conta pixel con tutti i campioni colore e alpha azzerati, mentre PreservedFragmentCount conta oggetti sostitutivi, non singoli pixel o contorni conservati; i contatori dopo un errore possono essere parziali e non implicano output confermato
0.001 punti PDF; RGB e alpha vengono entrambi azzerati, poi un overlay opaco FillColor copre il rettangolo/ActualText o /Alt, XFA e semantica dei livelli opzionali inclusi /OCProperties, /OCG e /OCMD; il metodo non ricostruisce struttura logica né mantiene tale semantica nascostaTr sconosciuti e disegno scn/SCN con pattern o spazi colore speciali; gli stream di contenuto esaminati supportati sono senza filtri o usano un solo filtro nominato /FlateDecode256 MiB, corpi attivi individuali a 64 MiB, corpi attivi totali a 256 MiB, object stream decodificati a 64 MiB ciascuno e 256 MiB totali e slot degli oggetti a 1000000; la decodifica del contenuto esaminato ha ulteriori limiti di 32 MiB per stream e 64 MiB totali/AF, l'albero /Names, gli allegati nativi incorporati e le annotazioni di allegato file sulle pagine redatte vengono rimossi; le voci di file associati arbitrarie annidate in dizionari di struttura non correlati non rientrano nella garanzia esplicita di questo metodo/Redact, il metodo produce comunque il profilo di sicurezza sanitizzato a revisione singola
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;