PDFium Delphi Component Docs

Metodo SaveAsRedacted

Componente: TPdf  ·  Unità: PDFium
Applica le annotazioni di redazione PDF a uno snapshot isolato e scrive un risultato pulito a revisione unica senza modificare il documento caricato

Sintassi

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;

Descrizione

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

Opzioni

Le 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

Report

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

Confini di sicurezza

Esempio

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;

Vedere anche

SaveAsSanitised, SaveAsReachable, CreateAnnotation, FPdfRedaction geometry helpers