Rechercher dans un PDF en utilisant C#

La recherche de texte spécifique dans PDF documents est une tâche courante dans les systèmes de gestion de documents, les outils de révision juridique, les processeurs de factures et d’autres applications d’entreprise. Que vous essayiez de localiser un mot-clé, d’extraire certaines valeurs ou de masquer des informations sensibles, l’automatisation de la recherche PDF peut vous faire gagner beaucoup de temps et d’efforts.

Dans cet article de blog, vous apprendrez comment rechercher du texte dans des fichiers PDF de manière programmatique en utilisant C#. Nous vous guiderons à travers les fonctionnalités clés étape par étape avec des exemples de code C# pratiques.

Cet article aborde les sujets suivants :

Bibliothèque C# pour rechercher dans des documents PDF

Aspose.PDF for .NET simplifie le processus de recherche de texte dans les fichiers PDF en utilisant C#. Il vous permet de trouver des mots exacts, de faire correspondre des motifs à l’aide d’expressions régulières, et même de surligner ou de remplacer le texte correspondant - le tout en quelques lignes de code. Cette bibliothèque puissante offre des fonctionnalités robustes pour manipuler des documents PDF. Elle permet aux développeurs d’implémenter facilement des fonctionnalités de recherche. Avec Aspose.PDF, vous pouvez rapidement trouver des mots dans un PDF, ce qui en fait un outil inestimable pour les développeurs de logiciels.

Avant de plonger dans la recherche de texte dans les PDF, vous devez configurer votre environnement de développement. Suivez ces étapes pour commencer avec Aspose.PDF for .NET :

1. Installer Aspose.PDF for .NET.

Téléchargez-le depuis les releases ou installez-le via NuGet.Ouvrez votre projet .NET dans Visual Studio et exécutez la commande suivante dans la console du gestionnaire de packages NuGet :

PM> Install-Package Aspose.PDF

Cette commande ajoute la bibliothèque Aspose.PDF à votre projet afin que vous puissiez accéder à ses puissantes fonctionnalités de traitement des PDF.

2. Importer les espaces de noms requis

En haut de votre fichier C#, ajoutez ces directives using :

using Aspose.Pdf;
using Aspose.Pdf.Text;

Maintenant, vous êtes prêt à commencer à rechercher du texte dans vos fichiers PDF en utilisant lAPI dAspose.PDF.

Rechercher du texte dans un PDF en utilisant C#

Avec Aspose.PDF for .NET, vous pouvez facilement rechercher des mots ou des phrases spécifiques dans un PDF, localiser toutes leurs occurrences et effectuer des actions telles que les mettre en surbrillance ou extraire leurs détails.

Suivez ces étapes pour effectuer une recherche de texte de base :

  1. Chargez le fichier PDF cible à l’aide de la classe Document.
  2. Créer un TextFragmentAbsorber pour définir le mot-clé de recherche.
  3. Exécutez l’absorbeur sur toutes les pages en utilisant la méthode Accept().
  4. Retrieve all matching text fragments.
  5. Print the number of matches found.
  6. Bouclez à travers et affichez chaque correspondance avec son numéro de page.

L’exemple de code suivant met en œuvre ces étapes.

// Load the PDF file
Document pdfDocument = new Document("sample.pdf");

// Créer un absorbeur de texte avec le mot-clé de recherche
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");

// Appliquez l'absorbeur à toutes les pages
pdfDocument.Pages.Accept(textFragmentAbsorber);

// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;

// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");

// Boucle à travers et imprime chaque texte trouvé
foreach (TextFragment fragment in textFragments)
{
    Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}

Exemple de sortie

Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3

Cet exemple démontre une recherche de mots-clés simple qui fonctionne sur toutes les pages du PDF. Vous verrez le texte correspondant avec son numéro de page.

Comprendre les classes clés utilisées dans la recherche PDF

Pour mieux comprendre ce qui se passe dans le code, voici un bref aperçu des classes et méthodes clés impliquées :

  • Document : Représente l’ensemble du fichier PDF. Il donne accès aux pages, au contenu et à la structure.
  • TextFragmentAbsorber: Trouve toutes les occurrences d’une chaîne ou d’un motif donné dans le PDF. Vous pouvez également activer des fonctionnalités telles que la recherche sans tenir compte de la casse ou basée sur des expressions régulières.
  • Accept(): Applique l’absorbeur à chaque page. Il parcourt le document et collecte les fragments correspondants.
  • TextFragments: Une collection de tous les fragments de texte correspondants retournés par l’absorbeur.
  • TextFragment: Chaque correspondance individuelle avec des détails comme le contenu, la position et le numéro de page.

Recherche insensible à la casse et par mot entier en utilisant C#

Lorsque vous recherchez du contenu PDF, vous devez contrôler comment le système trouve des correspondances pour garantir des résultats précis. Parfois, vous souhaitez ignorer la casse des lettres ("Facture" vs. "facture"), ou vous voulez faire correspondre uniquement des mots entiers—pas de correspondances partielles au sein d’autres mots.

Aspose.PDF for .NET vous donne les outils pour le faire.

Recherche insensible à la casse

Par défaut, les recherches sont sensibles à la casse. Pour ignorer la casse des lettres, utilisez TextSearchOptions avec IgnoreCase activé :

// Chargez le fichier PDF
Document pdfDocument = new Document("sample.pdf");

// Créer un absorbeur de texte avec une expression régulière insensible à la casse
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");

// Définir les options de recherche de texte pour activer l'utilisation des expressions régulières
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

// Appliquez l'absorbeur à toutes les pages.
pdfDocument.Pages.Accept(textFragmentAbsorber);

// Récupérez les fragments de texte correspondants
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;

// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");

// Boucle à travers et affiche chaque fragment de texte trouvé
foreach (TextFragment fragment in textFragments)
{
    Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}

Cela trouvera à la fois "Invoice", "invoice", "INVOICE", et d’autres variations.

Correspondre uniquement aux mots entiers

Vous pouvez également prévenir les correspondances partielles. Par exemple, une recherche pour car ne devrait pas correspondre à care ou scar.

// Load the PDF file
Document pdfDocument = new Document("sample.pdf");

// Create a text absorber with a regular expression pattern for whole word match
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");

// Définissez les options de recherche de texte pour activer l'utilisation des expressions régulières.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

// Appliquez l'absorbeur à toutes les pages
pdfDocument.Pages.Accept(textFragmentAbsorber);

// Récupérer les fragments de texte correspondants
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;

// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");

// Boucle à travers et affiche chaque fragment de texte trouvé
foreach (TextFragment fragment in textFragments)
{
    Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}

Cela garantit que seules les instances autonomes du mot “voiture” sont correspondantes.

Recherche avec des expressions régulières dans PDF

Dans certains cas, vous devez trouver plus qu’un mot spécifique—vous souhaitez correspondre à des motifs tels que des dates, des adresses e-mail ou des numéros de référence. C’est là que les expressions régulières (regex) entrent en jeu.

Aspose.PDF for .NET vous permet d’utiliser des regex pour une recherche de texte avancée dans n’importe quelle partie de votre document PDF.

Exemple : Trouver toutes les dates dans un PDF

Disons que vous souhaitez trouver toutes les dates au format jj/mm/aaaa :

// Charger le PDF et chercher du texte
Document pdfDocument = new Document("sample.pdf");

// Activer regex dans les options de recherche
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
    IsRegularExpressionUsed = true
};

// Create absorber with date pattern
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);

// Appliquer un absorbeur sur les pages
pdfDocument.Pages.Accept(absorber);

// Boucle et imprime les motifs trouvés
foreach (TextFragment fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}

Autres modèles utiles :

  • Emails: \b[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
  • Phone Numbers: \d{3}[-.\s]??\d{3}[-.\s]??\d{4}
  • Numéros de facture : INV-\d+

Regex élargit vos capacités de recherche bien au-delà du texte statique, vous aidant à extraire des données structurées à partir de documents non structurés.

Rechercher et extraire du texte avec des détails de position

Parfois, trouver le texte ne suffit pas—vous devez peut-être savoir où exactement il apparaît dans le PDF. Aspose.PDF vous permet d’extraire le numéro de page, les coordonnées et les détails de mise en forme de chaque correspondance.

Cette fonctionnalité est particulièrement utile pour créer des index, taguer des documents ou créer des liens cliquables.

Exemple : Obtenir la position de chaque correspondance

// Charger le PDF et rechercher du texte
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);

// Obtenez des fragments correspondants
TextFragmentCollection fragments = absorber.TextFragments;

// Imprimer la position et le texte pour chaque match
foreach (TextFragment fragment in fragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Page: {fragment.Page.Number}");
    Console.WriteLine($"Position - X: {fragment.Position.XIndent}, Y: {fragment.Position.YIndent}");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}, Size: {fragment.TextState.FontSize}");
    Console.WriteLine("------------");
}

Sample Output

Text: invoice
Page: 1
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 2
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 3
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------

Vous savez maintenant exactement où le mot `invoice” apparaît, ainsi que son style. Ce niveau de détail ouvre la porte à un traitement avancé, tel que des annotations, des infobulles ou des mises en surbrillance dynamiques.

Mettre en surbrillance ou remplacer le texte trouvé

Une fois que vous avez localisé du texte spécifique dans un PDF, vous pouvez aller plus loin en le surlignant ou même en le remplaçant par un nouveau contenu. Aspose.PDF for .NET vous permet de styliser ou de modifier le texte correspondant facilement en utilisant l’objet TextFragment.

Rechercher et mettre en surbrillance du texte dans un PDF

Vous pouvez mettre en évidence visuellement le texte en changeant sa couleur de fond et de police.

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);

foreach (TextFragment fragment in absorber.TextFragments)
{
    // Highlight by changing text appearance
    fragment.TextState.BackgroundColor = Color.Yellow;
    fragment.TextState.ForegroundColor = Color.Red;
    fragment.TextState.FontStyle = FontStyles.Bold;
}

Ceci est utile pour la révision, la mise en évidence, ou la génération de rapports annotés.

Trouver et remplacer du texte

Besoin de rayer ou de mettre à jour le texte dans le document ? Remplacez-le simplement directement :

foreach (TextFragment fragment in absorber.TextFragments)
{
    fragment.Text = "REDACTED";
}

Vous pouvez même appliquer un nouveau formatage lors du remplacement :

fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;

La mise en surbrillance et le remplacement de texte par programmation vous permettent d’automatiser de nombreuses tâches de traitement de documents, comme le nettoyage de modèles, la mise à jour de contenu obsolète ou la censure de données privées.

Rechercher sur toutes les pages ou sur des pages spécifiques

Par défaut, Aspose.PDF recherche sur toutes les pages d’un PDF. Mais parfois, vous pourriez vouloir limiter la recherche à une page spécifique ou à une plage de pages—surtout lorsque vous travaillez avec de gros fichiers ou lorsque le contenu est prévisible.

Aspose.PDF facilite les deux.

Recherche sur toutes les pages (par défaut)

Si vous ne spécifiez pas de page, l’absorbeur recherche automatiquement chaque page.

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages

Rechercher sur une page spécifique

Vous pouvez également rechercher une seule page en la ciblant directement :

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");

// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);

Recherche sur une gamme de pages

Pour rechercher une plage personnalisée (par exemple, pages 2 à 4), il suffit de parcourir la plage :

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");

// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
    pdfDocument.Pages[i].Accept(absorber);
}

Cette approche vous donne un contrôle total sur la performance et la précision, particulièrement utile pour les documents numérisés ou sectionnés.

Cas d’utilisation avancé : Rechercher et rayer les informations sensibles

Dans les documents juridiques, RH ou financiers, il est courant de dissimuler des contenus sensibles—tels que des noms, des identifiants ou des numéros de compte—avant de les partager. Aspose.PDF for .NET facilite cela en combinant la recherche avec des fonctionnalités de censure.

Vous pouvez rechercher des termes puis appliquer un superposition noire en utilisant RedactionAnnotation.

// Charger le PDF et rechercher le texte
Document pdfDocument = new Document("sample.pdf");

// Search for the name \"John Doe\"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);

// Boucle à travers les fragments trouvés et censure
foreach (TextFragment fragment in absorber.TextFragments)
{
    // Obtenez la position et les dimensions
    Aspose.Pdf.Rectangle rect = new Aspose.Pdf.Rectangle(
        fragment.Position.XIndent,
        fragment.Position.YIndent,
        fragment.Position.XIndent + fragment.Rectangle.Width,
        fragment.Position.YIndent + fragment.Rectangle.Height
    );

    // Créer une annotation de rédaction
    RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
    {
        FillColor = Color.Black,
        Color = Color.Black
    };

    // Ajoutez et appliquez une suppression
    fragment.Page.Annotations.Add(redaction);
    redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");

Que se passe-t-il

  • Le texte cible (“John Doe”) est trouvé et recouvert d’une boîte noire.
  • Ce n’est pas seulement visuel, cela supprime le contenu de la couche PDF, le rendant irrécupérable depuis le fichier.

Obtenez une licence gratuite

Maintenant que vous avez appris comment rechercher, extraire, mettre en évidence et rédiger du texte dans des fichiers PDF en utilisant Aspose.PDF for .NET, il est temps de mettre ces connaissances en pratique.

Essayez-le vous-même : Téléchargez une licence temporaire gratuite et commencez à créer vos propres outils PDF intelligents.

Rechercher dans le PDF : Ressources gratuites

Vous voulez aller au-delà de la simple recherche de texte dans les fichiers PDF ? Explorez les capacités complètes d’Aspose.PDF for .NET avec ces ressources gratuites et conviviales pour les développeurs :

  • Guide du développeur Apprenez à créer, modifier, convertir et sécuriser des fichiers PDF par programme. Aspose.PDF for .NET Documentation

  • Outils en ligne gratuits Convertir, fusionner, diviser et modifier des fichiers PDF directement dans votre navigateur. Aspose Free PDF Tools

  • Référence de l’API En savoir plus sur les classes, propriétés et méthodes disponibles dans Aspose.PDF for .NET afin d’accélérer votre développement. Aspose.PDF API Reference

  • Forum de support Posez des questions, signalez des problèmes et obtenez des réponses directement des experts d’Aspose. Aspose Support Forum

Ces ressources sont gratuites et disponibles pour vous aider à tirer le meilleur parti de votre parcours de développement PDF.

Conclusion

La recherche de texte dans des fichiers PDF est une fonctionnalité vitale pour de nombreuses applications basées sur des documents—que vous extrayez des données, auditez du contenu, ou préparez des fichiers pour une caviardage. Avec Aspose.PDF for .NET, vous pouvez facilement effectuer des recherches par mots-clés, utiliser des expressions régulières, surligner les résultats, et même caviarder des informations sensibles avec précision et contrôle. Aspose.PDF offre une API conviviale pour les développeurs qui simplifie les opérations PDF complexes—vous faisant gagner du temps tout en permettant une automatisation puissante.

Si vous avez des questions ou avez besoin de plus d’assistance, n’hésitez pas à nous contacter sur notre forum de support gratuit.

Voir aussi