PDFium Delphi Component Docs

Helpers de géométrie bornée pour le caviardage

FPdfRedaction fournit une inspection prudente de la source et les opérations géométriques utilisées par TPdf.SaveAsRedacted ; la méthode de haut niveau apporte la transaction, le traitement des annotations, les caches opaques, la régénération du contenu, l’assainissement et l’élagage des ressources

Les helpers modifient les objets natifs dans la copie de transaction isolée de l’appelant et lèvent EPdfRedactionGeometry pour une géométrie non prise en charge ou un budget épuisé ; ils ne réalisent pas seuls un export sécurisé complet

Déclarations publiques

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

Coordonnées et géométrie prise en charge

Les rectangles et tolérances de courbe utilisent des points dans l’espace utilisateur PDF ; les points des tracés sont transformés dans l’espace de page avant découpage, et ObjectIndex est l’indice natif original de l’objet, commençant à zéro, qui permet de conserver l’ordre de dessin

Le développement et la géométrie partielle refusent la transparence et les états de mélange, types d’enfant non pris en charge, matrices singulières, remplissages à motif et découpages complexes ou non redondants ; un découpage rectangulaire redondant pris en charge doit contenir toutes les limites de l’objet

Options et rapport cumulatif

OptionValeur par défautSignification
MaxFormDepth32Profondeur de développement des Form imbriqués
MaxObjects1000000Limites d’énumération des pages et du cumul des enfants développés
MaxPathSegments262144Segments d’entrée par tracé et cumul des points générés
MaxFragments1000000Régions rectangulaires conservées et cumul des fragments de remplacement
MaxImagePixels16777216Cumul des pixels d’image décodés traités
MaxGeometryOperations67108864Cumul des opérations géométriques et d’intersection des pixels
CurveTolerance0.01Tolérance d’aplatissement cubique en points PDF

Initialisez les options avec TPdfRedactionGeometryOptions.Default et mettez le rapport à zéro une seule fois avant la transaction ; conservez ce rapport entre les appels pour cumuler points générés, pixels d’image, fragments et budgets d’opérations

ExpandedFormCount et ScannedChildCount décrivent le développement ; les visites comprennent les instances Form racines et leurs enfants ; ClippedPathCount, FlattenedCurveCount et GeneratedPointCount décrivent les tracés, y compris les points intermédiaires de découpage ; MaskedImageCount, ScannedPixelCount, MaskedPixelCount et PixelIntersectionTestCount décrivent les images

FragmentCount compte les objets de remplacement, et non les contours ou pixels ; GeometryOperationCount cumule le travail borné des helpers ; après une exception, le rapport peut décrire un travail partiel sur la copie abandonnée

Inspection de la source et limites de l’export

ValidateDetailedRedactionSource inspecte les objets actifs et le contenu décodé avant modification ; TPdf.SaveAsRedacted l’appelle pour chaque profil, y compris la suppression d’objets entiers et le profil partiel plus simple

Le profil actuel ne reconstruit pas Tagged PDF, ne préserve pas la transparence arbitraire, ne prend pas en charge tous les contours ou découpages et ne promet pas une conservation sans perte des images encodées ; une sortie sécurisée exige de retirer les flux d’origine et ressources inutilisées après régénération, comme le fait TPdf.SaveAsRedacted

L’appelant direct doit fournir une copie isolée, vérifier les capacités natives et des budgets finis positifs, abandonner la copie en cas d’échec, régénérer le contenu des pages modifiées et achever l’assainissement et l’élagage avant exportation

Voir aussi

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress