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 capture le document courant dans un instantané à accès direct isolé, ouvre cet instantané comme un TPdf séparé et traite chaque rectangle d’annotation /Redact
Les options par défaut activent PreservePartialObjects et PreserveComplexObjects pour conserver la géométrie sûre prise en charge ; ce profil borné reconstruit le texte depuis les fragments de caractères conservés, découpe les tracés remplis unis et efface les pixels concernés des images affines
Dès qu’une annotation de caviardage existe, le profil détaillé développe chaque instance Form XObject de chaque page, y compris celles sans caviardage, avant l’application ; les transformations d’instance sont composées et les flux Form partagés originaux peuvent être supprimés par élagage des ressources
Mettez PreservePartialObjects := False pour supprimer les objets entiers intersectés, ou gardez-le actif avec PreserveComplexObjects := False pour le profil simple de fragmentation du texte, rectangles et images alignés sur les axes ; les contrôles de sûreté source s’appliquent aux trois profils
La méthode retire toutes les annotations de caviardage, éventuellement les autres annotations intersectées, les annotations de pièce jointe des pages caviardées et les pièces jointes natives incorporées ; elle réécrit une version assainie sans /AF du catalogue, contenu actif, formulaires, métadonnées ni objets inaccessibles
Une fois le contenu de page régénéré, un élagage précis des ressources balaie les portées de ressources de pages, de Form XObject, de motifs, d’apparences, héritées et imbriquées et ne supprime que les noms inutilisés avant que les objets inatteignables ne soient jetés
La sortie contient une seule révision propre sans anciennes révisions ; le document source chargé reste intact ; une sémantique source ou une géométrie détaillée non prise en charge interrompt l’opération plutôt que de produire un résultat partiellement caviardé
FillColor — couleur opaque de remplacement, clBlack par défautRemoveIntersectingAnnotations — supprime les annotations autres que de caviardage dont les rectangles chevauchent un rectangle de caviardage, True par défautMaxPageObjects — nombre maximal d’objets de page de premier niveau analysés sur l’ensemble des pages caviardées, 1000000 par défautPreservePartialObjects — conserve les fragments de texte, de chemin et d’image non intersectants pris en charge, True par défautMaxSplitObjects — nombre maximal de fragments sûrs créés au cours de l’opération, 1000000 par défautPreserveComplexObjects — active le développement borné des Form, le découpage des tracés remplis unis et l’effacement des pixels d’images affines si PreservePartialObjects est aussi actif ; défaut TrueMaxFormDepth — profondeur maximale des Form imbriqués, défaut 32, plage 1..64MaxPathPoints — limite les segments d’un tracé affecté et les points générés cumulés, défaut 262144, plage 1..1000000MaxImagePixels — pixels décodés cumulés des remplacements détaillés, défaut 16777216, plage 1..67108864MaxGeometryOperations — travail géométrique détaillé cumulé, dont parcours des annotations et du texte, subdivision et découpage des tracés et intersections de pixels ; défaut 67108864, plage 1..1000000000CurveTolerancePdfPoints — tolérance d’aplatissement cubique dans l’espace page, défaut 0.01, plage finie 0.0001..0.1 ; les coupes sont élargies de cette tolérance plus 0.001 point PDF, ce qui peut retirer une petite marge sûre supplémentaireCes options Form, tracé, image, géométrie et tolérance sont validées et utilisées par le profil détaillé ; elles n’augmentent pas les budgets indépendants d’inspection source
TPdfRedactionReport renvoie RedactionCount, RedactedPageCount, ScannedObjectCount, RemovedObjectCount, RemovedAnnotationCount, RemovedAttachmentCount, OverlayCount, SplitTextObjectCount, SplitPathObjectCount, SplitImageObjectCount, PreservedFragmentCount, les compteurs d’octets, les SanitiseReport et ResourcePruneReport imbriqués, Succeeded et ErrorMessage
Le profil détaillé ajoute ExpandedFormCount, ScannedFormChildCount, FlattenedCurveCount, GeneratedPathPointCount, MaskedImageCount, ScannedImagePixelCount, MaskedImagePixelCount, PixelIntersectionTestCount et GeometryOperationCount ; CurveTolerancePdfPoints consigne la tolérance après réussite
ScannedFormChildCount compte les objets natifs visités pendant le développement, instances racines comprises ; GeneratedPathPointCount comprend les points intermédiaires de découpage et les points d’aplatissement
MaskedImagePixelCount compte les pixels dont tous les échantillons de couleur et d’alpha sont effacés ; PreservedFragmentCount compte les objets de remplacement, pas les pixels ou contours ; en cas d’échec, les compteurs peuvent être partiels et ne prouvent pas une sortie validée
0.001 point PDF ; RGB et alpha sont mis à zéro, puis un cache opaque FillColor recouvre le rectangle/ActualText ou /Alt, XFA et sémantique des calques facultatifs, dont /OCProperties, /OCG et /OCMD ; la méthode ne reconstruit pas la structure logique et ne conserve pas ces sémantiques cachéesTr inconnus, peintures scn/SCN à motif ou espace spécial ; les flux inspectés acceptés sont non filtrés ou utilisent un seul filtre nommé /FlateDecode256 MiB, chaque corps actif à 64 MiB, leur total à 256 MiB, chaque flux d’objets décodé à 64 MiB et leur total à 256 MiB, avec 1000000 emplacements ; le contenu décodé a ses limites supplémentaires de 32 MiB par flux et 64 MiB au total/AF du catalogue, l’arborescence /Names, les pièces jointes intégrées natives et les annotations de pièce jointe de fichier sur les pages caviardées sont supprimés ; les entrées arbitraires de fichiers associés imbriquées dans des dictionnaires de structure sans rapport sortent de la garantie explicite de cette méthode/Redact, la méthode produit le profil sécurisé assaini à révision unique
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;