Rechercher une expression régulière dans un fichier PDF

Introduction

Lorsque vous travaillez avec des documents PDF volumineux, vous pouvez être amené à rechercher des modèles ou des formats spécifiques tels que des dates, des numéros de téléphone ou d’autres données structurées. Parcourir manuellement le PDF peut être fastidieux, n’est-ce pas ? C’est là qu’il est utile d’utiliser une expression régulière (regex). Dans ce didacticiel, nous allons découvrir comment rechercher un modèle d’expression régulière dans un fichier PDF à l’aide d’Aspose.PDF pour .NET. Ce guide vous guidera à travers chaque étape afin que vous puissiez facilement l’implémenter dans votre application .NET.

Prérequis

Avant de plonger dans le didacticiel étape par étape, passons en revue ce que vous devez mettre en place :

  • Aspose.PDF pour .NET : vous devez avoir installé cette bibliothèque. Si vous ne l’avez pas encore installée, vous pouveztéléchargez-le ici.
  • IDE : Visual Studio ou tout autre IDE compatible C#.
  • .NET Framework : assurez-vous que votre projet est configuré avec la version appropriée du .NET Framework.
  • Connaissances de base de C# : bien que ce guide soit détaillé, une compréhension de base de C# sera utile.

Paquets d’importation

Pour commencer, vous devez importer les espaces de noms nécessaires depuis Aspose.PDF pour .NET dans votre projet. Ces packages sont essentiels pour travailler avec des fichiers PDF et effectuer des opérations de recherche à l’aide de regex.

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

Décomposons le processus de recherche d’expressions régulières dans un fichier PDF à l’aide d’Aspose.PDF en plusieurs étapes.

Étape 1 : Configurer le répertoire de documents

Chaque opération PDF commence par spécifier l’emplacement de votre document. Vous devrez définir le chemin d’accès à votre fichier PDF, qui est stocké dans ledataDir variable.

Étape 1.1 : Définissez le chemin d’accès à votre document

// Définissez le chemin d'accès à votre document PDF
string dataDir = "YOUR DOCUMENT DIRECTORY";

Remplacer"YOUR DOCUMENT DIRECTORY" avec le chemin d’accès réel à votre fichier PDF. Cette étape est cruciale car elle pointe votre code vers le fichier avec lequel vous souhaitez travailler.

Étape 1.2 : Ouvrir le document PDF

Ensuite, vous devez ouvrir le document PDF à l’aide de laDocument classe d’Aspose.PDF.

// Ouvrir le document
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");

Ici,"SearchRegularExpressionAll.pdf" est le fichier PDF d’exemple dans lequel nous allons effectuer la recherche regex.

Étape 2 : Configurer TextFragmentAbsorber

C’est ici que la magie opère !TextFragmentAbsorber La classe aide à capturer des fragments de texte qui correspondent à un modèle spécifique ou à une expression régulière.

Configurons l’absorbeur pour rechercher des modèles à l’aide d’une expression régulière. Dans ce cas, nous recherchons un modèle d’années comme « 1999-2000 ».

// Créez un objet TextAbsorber pour rechercher toutes les phrases correspondant à l'expression régulière
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Comme en 1999-2000

L’expression régulière\\d{4}-\\d{4} recherche un modèle de quatre chiffres suivis d’un trait d’union et de quatre autres chiffres, ce qui est typique des plages d’années.

Étape 3 : Activer la recherche par expression régulière

Pour garantir que l’opération de recherche interprète le modèle comme une expression régulière, vous devez configurer les options de recherche à l’aide de l’TextSearchOptions classe.

// Définir l’option de recherche de texte pour spécifier l’utilisation des expressions régulières
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

Réglage de laTextSearchOptions àtrue garantit que l’absorbeur utilise une recherche basée sur des expressions régulières plutôt que du texte brut.

Étape 4 : Accepter l’absorbeur de texte

À ce stade, vous appliquez l’absorbeur de texte au document PDF afin qu’il puisse effectuer l’opération de recherche. Cela se fait en appelant la fonctionAccept méthode sur lePages objet du document PDF.

// Accepter l'absorbeur pour toutes les pages
pdfDocument.Pages.Accept(textFragmentAbsorber);

Cette commande traite toutes les pages du PDF, à la recherche de tout texte correspondant à l’expression régulière.

Étape 5 : Extraire et afficher les résultats

Une fois la recherche terminée, vous devez extraire les résultats.TextFragmentAbsorber stocke ces résultats dans unTextFragmentCollectionVous pouvez parcourir cette collection pour accéder et afficher chaque fragment de texte correspondant.

Étape 5.1 : Récupérer les fragments de texte extraits

// Obtenir les fragments de texte extraits
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

Maintenant que vous avez collecté les fragments, il est temps de les parcourir et d’afficher les détails pertinents tels que le texte, la position, les détails de la police, etc.

Étape 5.2 : Parcourir les fragments

// Boucle à travers les fragments
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}

Pour chaqueTextFragment, les détails tels que la taille de la police, le nom de la police et la position sont imprimés. Cela permet non seulement de retrouver le texte, mais également de connaître sa mise en forme et son emplacement exacts.

Conclusion

Et voilà ! La recherche de modèles dans un fichier PDF à l’aide d’expressions régulières est incroyablement puissante, en particulier pour le texte structuré comme les dates, les numéros de téléphone et les modèles similaires. Aspose.PDF pour .NET offre un moyen transparent d’effectuer de telles opérations en toute simplicité. Vous pouvez désormais exploiter la puissance des expressions régulières pour automatiser la recherche de texte PDF, ce qui rend votre flux de travail plus efficace.

FAQ

Puis-je rechercher plusieurs modèles dans un seul PDF ?

Oui, vous pouvez exécuter plusieursTextFragmentAbsorber objets, chacun avec des modèles d’expressions régulières différents, sur le même PDF.

Aspose.PDF prend-il en charge la recherche de modèles insensibles à la casse ?

Absolument ! Vous pouvez configurer leTextSearchOptions pour rendre la recherche insensible à la casse.

Existe-t-il une limite à la taille du PDF dans lequel je peux effectuer une recherche ?

Il n’y a pas de limite stricte, mais les performances peuvent varier en fonction de la taille du PDF et de la complexité du modèle regex.

Puis-je surligner le texte trouvé dans le PDF ?

Oui, Aspose.PDF vous permet de surligner ou même de remplacer le texte une fois qu’il est trouvé à l’aide de l’absorbeur.

Comment gérer les erreurs si le modèle n’est pas trouvé ?

Si aucune correspondance n’est trouvée, leTextFragmentCollection sera vide. Vous pouvez gérer ce scénario avec une simple vérification avant de parcourir les résultats.