PDFium Delphi Component Docs

Begrenzte Geometrie-Helper für Schwärzung

FPdfRedaction stellt konservative Quellprüfung und Geometrieoperationen für TPdf.SaveAsRedacted bereit; die übergeordnete Methode übernimmt Transaktion, Annotationen, deckende Overlays, Inhaltsregeneration, Bereinigung und Ressourcenentfernung

Die Helper ändern native Objekte in der isolierten Transaktionskopie und lösen bei nicht unterstützter Geometrie oder erschöpften Budgets EPdfRedactionGeometry aus; allein führen sie keinen vollständigen sicheren Export durch

Öffentliche Deklarationen

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);

Koordinaten und unterstützte Geometrie

Schwärzungsrechtecke und Kurventoleranzen verwenden PDF-Benutzerraumpunkte; Pfadpunkte werden vor dem Clipping in den Seitenraum transformiert; ObjectIndex ist der ursprüngliche nullbasierte native Seitenobjektindex zur Erhaltung der Zeichenreihenfolge

Expansion und Teilgeometrie lehnen Transparenz/Blendzustände, nicht unterstützte Kindtypen, singuläre Matrizen, Musterfüllungen und komplexe oder nicht redundante Clips ab; ein unterstützter redundanter rechteckiger Clip muss die vollständigen Objektgrenzen enthalten

Optionen und kumulierter Bericht

OptionStandardBedeutung
MaxFormDepth32Expansionstiefe verschachtelter Forms
MaxObjects1000000Seitenerfassung und kumulierte expandierte Kinder
MaxPathSegments262144Eingabesegmente pro Pfad und kumulierte erzeugte Pfadpunkte
MaxFragments1000000Erhaltene Rechteckregionen und kumulierte Ersatzfragmente
MaxImagePixels16777216Kumulierte verarbeitete decodierte Bildpixel
MaxGeometryOperations67108864Kumulierte Geometrie- und Pixelintersektionstests
CurveTolerance0.01Toleranz kubischer Abflachung in PDF-Punkten

Initialisieren Sie mit TPdfRedactionGeometryOptions.Default und nullen Sie den Bericht einmal vor der Transaktion; behalten Sie ihn zwischen Aufrufen, damit erzeugte Punkte, Bildpixel, Fragmente und Operationen kumuliert werden

ExpandedFormCount und ScannedChildCount beschreiben Expansion; Besuche umfassen Wurzelinstanzen und Kinder; ClippedPathCount, FlattenedCurveCount und GeneratedPointCount beschreiben Pfadarbeit inklusive Zwischenpunkte; MaskedImageCount, ScannedPixelCount, MaskedPixelCount und PixelIntersectionTestCount beschreiben Bildarbeit

FragmentCount zählt Ersatzobjekte, keine Polygonkonturen oder Pixel; GeometryOperationCount kumuliert begrenzte Helperarbeit; nach Ausnahme kann der Bericht Teilarbeit an der verworfenen Kopie beschreiben

Quellprüfung und Exportgrenze

ValidateDetailedRedactionSource untersucht aktive Objekte und decodierten Inhalt vor Änderungen; TPdf.SaveAsRedacted ruft es für jedes Profil auf, auch Ganzobjektentfernung und einfaches Teilprofil

Das aktuelle Profil rekonstruiert keine Tagged-PDF-Struktur, erhält keine beliebige Transparenz, unterstützt keine beliebigen Konturen/Clips und verspricht keinen verlustfreien Erhalt codierter Bilder; sicherer Export erfordert nach Regeneration die Entfernung originaler Streams und ungenutzter Ressourcen wie in TPdf.SaveAsRedacted

Direkte Aufrufer benötigen eine isolierte Dokumentkopie, geprüfte native Fähigkeiten und endliche positive Budgets; bei Fehler verwerfen, geänderten Seiteninhalt regenerieren und vor Export Bereinigung und Ressourcenentfernung abschließen

Siehe auch

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress