PDFium Delphi Component Docs

Helper geometrici per la redaction con limiti di risorse

FPdfRedaction fornisce l'ispezione prudenziale della sorgente e le operazioni geometriche usate da TPdf.SaveAsRedacted; il metodo di livello superiore gestisce transazione, annotazioni, coperture opache, rigenerazione del contenuto, sanitizzazione ed eliminazione delle risorse inutilizzate

Gli helper modificano gli oggetti nativi nella copia transazionale isolata del chiamante e sollevano EPdfRedactionGeometry per geometria non supportata o limiti esauriti; da soli non eseguono un'esportazione sicura completa

Dichiarazioni pubbliche

type
  EPdfRedactionGeometry = class(Exception);
  TPdfRedactionGeometryOptions = record
    MaxFormDepth, MaxObjects, MaxPathSegments, MaxFragments: Integer;
    MaxImagePixels, MaxGeometryOperations: Int64;
    CurveTolerance: Double;
    class function Default: TPdfRedactionGeometryOptions; static;
  end;
  TPdfRedactionGeometryReport = record
    ExpandedFormCount, ScannedChildCount, ClippedPathCount: Integer;
    FlattenedCurveCount, GeneratedPointCount, FragmentCount: Integer;
    MaskedImageCount: Integer;
    ScannedPixelCount, MaskedPixelCount, PixelIntersectionTestCount: Int64;
    GeometryOperationCount: Int64;
  end;

procedure ValidateDetailedRedactionSource(Source: TStream);
procedure ValidateDetailedRedactionText(PageObject: FPDF_PAGEOBJECT);
procedure ExpandRedactionForms(Page: FPDF_PAGE;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure ClipRedactionPath(Page: FPDF_PAGE; PageObject: FPDF_PAGEOBJECT;
  ObjectIndex: Integer; const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure MaskRedactionImage(Document: FPDF_DOCUMENT; Page: FPDF_PAGE;
  PageObject: FPDF_PAGEOBJECT; ObjectIndex: Integer;
  const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);

Coordinate e geometria supportata

Tutti i rettangoli di redazione e le tolleranze delle curve usano punti nello spazio utente PDF; i punti dei tracciati sono trasformati nello spazio pagina prima del clipping e ObjectIndex è l'indice nativo originale a base zero dell'oggetto pagina, usato per mantenere l'ordine di disegno

Espansione e geometria parziale rifiutano stati di trasparenza o blending, tipi di elementi non supportati, matrici singolari, riempimenti con pattern e clip complessi o non ridondanti; un clip rettangolare ridondante supportato deve contenere tutti i limiti dell'oggetto

Opzioni e report cumulativo

OpzioneValore predefinitoSignificato
MaxFormDepth32Profondità di espansione dei Form annidati
MaxObjects1000000Limiti dell'enumerazione di pagina e degli elementi espansi cumulativi
MaxPathSegments262144Segmenti di input per tracciato e punti generati cumulativi
MaxFragments1000000Regioni rettangolari mantenute e frammenti sostitutivi cumulativi
MaxImagePixels16777216Pixel immagine decodificati elaborati cumulativamente
MaxGeometryOperations67108864Lavoro cumulativo di geometria e intersezione dei pixel
CurveTolerance0.01Tolleranza dell'approssimazione cubica in punti PDF

Inizializzare le opzioni con TPdfRedactionGeometryOptions.Default e azzerare il report una sola volta prima della transazione; riutilizzare il report tra chiamate agli helper, così che punti generati, pixel, frammenti e limiti operativi si accumulino

ExpandedFormCount e ScannedChildCount descrivono l'espansione; il conteggio delle visite include istanze Form radice ed elementi figli. ClippedPathCount, FlattenedCurveCount e GeneratedPointCount descrivono il lavoro sui tracciati, inclusi punti intermedi di clipping; MaskedImageCount, ScannedPixelCount, MaskedPixelCount e PixelIntersectionTestCount descrivono il lavoro sulle immagini

FragmentCount conta oggetti sostitutivi, non contorni poligonali o pixel, e GeometryOperationCount accumula il lavoro limitato degli helper; un report lasciato da un'eccezione può descrivere lavoro parziale sulla copia transazionale scartata

Ispezione della sorgente e limiti dell'esportazione

ValidateDetailedRedactionSource esamina oggetti attivi e contenuto decodificato prima delle modifiche; TPdf.SaveAsRedacted lo invoca per ogni profilo, compresi rimozione di interi oggetti e profilo parziale semplificato

Il profilo attuale non ricostruisce la struttura Tagged PDF, non mantiene trasparenze arbitrarie, non supporta qualsiasi tratto o clip e non promette di conservare senza perdite le immagini codificate; un output sicuro richiede la rimozione degli stream originali e delle risorse inutilizzate dopo la rigenerazione, come fa TPdf.SaveAsRedacted

Chi chiama direttamente gli helper deve fornire una copia isolata del documento, verificare capacità native e limiti finiti positivi, scartare la copia in caso di errore, rigenerare il contenuto delle pagine modificate e completare sanitizzazione e pulizia delle risorse prima dell'esportazione

Vedere anche

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress