Comment caviarder le contenu PDF en TypeScript

Comment caviarder le contenu PDF en TypeScript

Ce guide montre comment caviarder le contenu PDF avec Aspose.PDF FOSS pour TypeScript. Page.AddRedact() marque une région; Page.ApplyRedactions() réécrit de manière destructive le flux de contenu afin que les glyphes sous chaque région marquée disparaissent. Les marques non appliquées restent des annotations ordinaires, sélectionnables et copiables. Il nécessite Node.js 22 ou une version ultérieure.

Guide étape par étape

Étape1: Installer le paquet

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

Vérifiez l’installation en important la classe Document dans un nouveau fichier TypeScript — cette ligne devrait se résoudre sans erreur une fois le paquet installé:

import { Document } from '@asposefoss/pdf';

Étape2: Importer les classes requises

Importez Document pour ouvrir le fichier; AddRedact() et ApplyRedactions() sont appelés directement sur les instances Page qu’il renvoie :

import { Document } from '@asposefoss/pdf';

Étape 3: Marquer une zone pour la rédaction

Page.AddRedact(opts) dessine un RedactAnnotation sur rect. fill définit la couleur peinte sur la zone une fois appliquée, et overlayText (avec align, fontSize, textColor) imprime une étiquette de remplacement telle que [REDACTED] :

const doc = Document.OpenFile('memo.pdf');
const page = doc.Pages[0];

page.AddRedact({
  rect: [216, 548, 460, 566],
  fill: [0, 0, 0],
  overlayText: '[REDACTED]',
  align: 'center',
  fontSize: 9,
  textColor: [1, 1, 1],
});

Étape 4: Appliquer les rédactions

Page.ApplyRedactions() réécrit de manière destructive le flux de contenu — les glyphes à l’intérieur de chaque RedactAnnotation marqué sur la page disparaissent définitivement, et les marques appliquées sont supprimées. Les marques ajoutées après cet appel restent non appliquées: la valeur sous celles-ci est toujours lisible et reste sélectionnable pour la copie :

page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');

Problèmes courants et correctifs

Un repère de rédaction affiche la boîte noire mais le texte sous-jacent peut toujours être copié. Page.ApplyRedactions() n’a jamais été appelé (ou a été appelé avant que le repère ne soit ajouté). Marquer avec AddRedact() seul dessine simplement une annotation sur la région — le contenu en dessous est détruit une seule fois ApplyRedactions() s’exécute.

ApplyRedactions() contenu supprimé du repère rect n’a pas couvert. rect est la région exacte réécrite — le texte ou les images qui ne se chevauchent que partiellement peuvent encore être partiellement détruits à la frontière. Les repères de taille sont généreux autour du contenu cible.

Les résultats de recherche ne peuvent pas être transmis directement à Page.AddRedact(). Un résultat de Page.SearchAnnotationText() contient des métadonnées d’annotation, pas la géométrie de la page — ce n’est pas la même forme que le rect an AddRedact() marque attend. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) sont les points d’entrée de la redaction-by-text-search, et les deux sont également disponibles au Document niveau pour balayer chaque page en un seul appel.

Une redaction survit au chiffrement de façon inattendue. Redaction et chiffrement sont des opérations indépendantes — appliquez les redactions avant d’enregistrer avec encrypt des options si le but est à la fois de supprimer le contenu et de restreindre l’accès à ce qui reste ; appliquer dans l’autre ordre n’annule pas un enregistrement déjà chiffré.

Foire aux questions

Quelle est la différence entre marquer et appliquer une rédaction?

AddRedact() ne crée qu’une annotation décrivant où une rédaction est prévue — le contenu couvert reste intact et reste sélectionnable/copiable jusqu’à ce que ApplyRedactions() s’exécute et réécrive la page de manière destructive.

Puis-je rédiger en recherchant du texte au lieu de spécifier un rectangle?

Oui — Page.MarkRedactText(find, opts) marque chaque correspondance de find pour une application ultérieure, et Page.RedactText(find, opts) marque et applique en un seul appel. Les deux existent également sur Document pour balayer l’ensemble du document.

Est-ce que ApplyRedactions() affecte les annotations autres que les marques de rédaction?

Non — il réécrit le flux de contenu sous ses propres marques RedactAnnotation; les autres types d’annotation sur la page ne sont pas modifiés par cet appel.

Une rédaction est-elle réversible?

Non — ApplyRedactions() est destructif. Conservez le fichier original si le contenu non rédigé doit être récupérable ultérieurement.

Voir aussi

 Français