Comment extraire le contenu d'un fichier PDF dans C# à l'aide de Xceed PdfLibrary pour .NET
Ce dont tu as besoin
- .NET 5 à .NET 10
- Xceed PdfLibrary pour .NET (version d'évaluation ou licence). L'ajouter via NuGet ou référencer la DLL.
- Un PDF à lire (ou en créer un dans le code en utilisant les extraits create-PDF ou split-PDF des autres articles)
Configurer le projet et la licence
Créez un projet de console ou web et ajoutez la bibliothèque. Depuis la ligne de commande (.NET CLI):
dotnet add package Xceed.PdfLibrary.NETOctroi de licences : Définissez votre clé de licence une fois au démarrage, avant toute DocumentPdf appels. Obtenir un clé d'essai gratuite ou une licence complète de la page produit. Voir le Créer un fichier PDF dans C# publicação para um trecho de configuração completa.
Extraire le texte de chaque page
Pour extraire le contenu d'un fichier PDF dans C#, commencez par le texte de chaque page. Chargez le document à l'aide de PdfDocument.Charger(chemin) ou un Flux), puis itérer sur pages du document et utiliser le Texte propriété sur chaque page. Dans l'ordre natif du PDF, cette propriété renvoie le texte de la page en préservant les espacements.
using (var doc = PdfDocument.Load("document.pdf"))
{
for (int i = 0; i < doc.Pages.Count; i++)
{
string text = doc.Pages[i].Text;
Console.WriteLine($"--- Page {i + 1} ---");
Console.WriteLine(text?.Trim() ?? "");
}
}Sur les pages vides ou celles sans texte extractible, Texte peut être nul ou une chaîne vide. La troncature et la vérification de nullité (comme ci-dessus) permettent de garder la sortie propre. Cette approche est idéale pour créer un index de texte intégral, pour décharger le contenu vers un .txt fichier, ou d'alimenter du texte dans un autre processus.
Extraire du texte d'une zone spécifique
Parfois, vous n'avez besoin que du texte contenu dans un rectangle donné (par exemple, une colonne d'une mise en page multicolonne, une bande d'en-tête ou une zone semblable à un formulaire). Dans ce cas, appelez ObtenirTexteDeZone(rectangle) sur la page. Passez (x, y, largeur, hauteur) dans les coordonnées de la page (origine en haut à gauche, Y vers le bas) pour le Rectangle constructeur.
using (var doc = PdfDocument.Load("document.pdf"))
{
var page = doc.Pages[0];
var area = new Rectangle(50, 100, 400, 200); // left, top, width, height
string textInArea = page.GetTextFromArea(area);
Console.WriteLine(textInArea ?? "");
}Ceci est utile pour les PDF basés sur des modèles où vous connaissez la position approximative du contenu qui vous intéresse, ou lorsque vous souhaitez ignorer les en-têtes et les pieds de page en extrayant uniquement le rectangle du corps principal.
Mots et ordre de lecture
Texte renvoie une seule chaîne de caractères par page dans l'ordre où elle apparaît dans le PDF. Si vous avez besoin de frontières de mots ou d'une vue dans l'ordre de lecture, la bibliothèque expose également Mots un recueil de Mot objets avec des limites et du texte) et TexteOrdonné Pour de nombreux cas d'utilisation (recherche, journalisation ou exportation simple), Texte c'est assez.
Extraction des valeurs des champs de formulaire (extraction de contrôle de formulaire)
Lorsqu'un PDF contient des contrôles de formulaire (champs AcroForm), vous pouvez en extraire les valeurs par programme. Après avoir chargé le document, doc.ChampsDeFormulaire vous donne tous les champs de formulaire du document ; champsDeFormulaire limite le résultat à une page donnée. Chaque champ possède une Nom, et son type détermine comment lire la valeur.
Champs de zones de texte : Lancer sur Champ de saisie de texte et utiliser le Texte propriété. Champs à cocher : Lancer sur ChampFormulaireCaseÀCocher et utiliser le EstCoché propriété. Vous pouvez gérer les deux dans une seule boucle :
using (var doc = PdfDocument.Load("form.pdf"))
{
foreach (var field in doc.FormFields)
{
if (field is TextBoxFormField textBox)
Console.WriteLine($"{textBox.Name}: {textBox.Text}");
else if (field is CheckBoxFormField checkBox)
Console.WriteLine($"{checkBox.Name}: {(checkBox.IsChecked ? "checked" : "unchecked")}");
}
}Autres types de contrôle : La bibliothèque prend en charge d'autres types de champs de formulaire (par exemple. ChampComboBox, Champ de liste déroulante, Groupe de boutons radioFormulaire. De même, itérer doc.ChampsDeFormulaire ou champsDeFormulaire, vérifiez le type et lisez la propriété appropriée. Pour plus de détails et les propriétés par type, voir le Documentation de Xceed PdfLibrary pour .NET.
Combiner l'extraction de texte et de formulaire
Vous pouvez extraire le contenu d'un fichier PDF dans C# en combinant l'extraction de texte et celle des formulaires en un seul passage. Chargez le document une seule fois, puis parcourez les pages en boucle pour Texte ou ObtenirTexteDeZone là où nécessaire) et boucle doc.ChampsDeFormulaire pour les valeurs de formulaire. En conséquence, vous obtenez à la fois le texte visible et les données du formulaire pour l'indexation, la validation ou l'exportation.
Exécutez le code
Collez les extraits ci-dessus dans une console ou un projet web, définissez votre clé de licence, et assurez-vous d'avoir un PDF au chemin que vous passez à PdfDocument.Charger par exemple,. document.pdf ou form.pdf).
Depuis Visual Studio, le répertoire courant est généralement le dossier du projet ; depuis la ligne de commande, c'est le dossier à partir duquel vous avez lancé l'application.
Si vous n'avez pas encore de PDF, utilisez Créer un fichier PDF dans C# extrait pour en générer un, ou créer un formulaire avec ChampsDeFormulaire (voir la documentation) puis exécutez le code d'extraction. Enfin, ouvrez la sortie de la console ou tout fichier que vous écrivez et confirmez que le texte extrait et les valeurs des formulaires correspondent au PDF.
Questions courantes
Dois-je jeter le document ? Oui. Préférer en utilisant ou appeler Disposer les descripteurs de fichiers et les flux sont ainsi libérés.
Puis-je charger depuis un flux au lieu d'un fichier ? Oui. Les surcharges de PdfDocument.Charger qui acceptent un Flux sont utiles lorsque le PDF provient de la mémoire ou d'une requête web.
Et si Text ou OrderedText est nul ? Pour les pages sans texte extractible, la bibliothèque peut retourner null. Fiez-vous à la coalescence nulle (par exemple. text ?? "") ou des vérifications explicites de nullité avant d'utiliser la valeur.
Comment savoir le type d'un champ de formulaire avant de le caster ? Compter sur is contrôles (par exemple. if (field is TextBoxFormField)) ou field.GetType(). La documentation répertorie tous les types de champs de formulaire et leurs propriétés.
Où puis-je voir plus d'exemples ? Voir le Documentation de Xceed PdfLibrary pour .NET pour les sujets avancés, plus de types de champs de formulaire et l'extraction dans l'ordre de lecture.
Besoin d'aide ? Consultez notre page d'assistance.
Puis-je utiliser ceci dans une application ASP.NET Core ? Oui. Le même code s'exécute dans n'importe quel hôte .NET. Définissez la clé de licence au démarrage, puis chargez et extrayez dans vos contrôleurs ou services. Pour les PDF téléchargés par l'utilisateur, chargez à partir du flux de téléchargement et extrayez le texte ou les valeurs du formulaire pour les stocker ou les renvoyer sous forme de JSON.
Résumé : Vous avez vu comment extraire du contenu d'un fichier PDF dans C# : chargement avec PdfDocument.Charger, Utilise Pages[i].Texte ou ObtenirTexteDeZone pour le texte, et utilisez ChampsDeFormulaire avec TextBoxFormField.Texte et CheckBoxFormField.EstCoché pour les valeurs de contrôle de formulaire. Libérez le document une fois terminé.
La même API fonctionne sur Windows, macOS et Linux.
Que pouvez-vous faire d'autre avec Xceed PdfLibrary ?
Avec Xceed PdfLibrary pour .NET, vous pouvez créer des PDF, ajouter des champs de formulaire, signer des documents, diviser par page ou par signet, et ajouter des filigranes. Les mêmes modèles (charger, lire ou modifier, enregistrer) s'appliquent.
Once you’re comfortable extracting content from a PDF in C#, try creating or filling form fields, or splitting and extracting in one workflow. The la documentation has samples for each of these.
Ready to extract content from PDFs in .NET?
Téléchargez Xceed PdfLibrary pour .NET et essayez-le gratuitement pendant 45 jours, sans engagement.
Next steps
- Download Xceed PdfLibrary for .NET ou get a free trial key. Learn more on the page produit.
- Install via NuGet: Xceed.PdfLibrary.NET. From the .NET CLI run:
- Need help? Visit our page d'assistance.
dotnet add package Xceed.PdfLibrary.NETSet your license key at startup, then load a PDF and use Pages[i].Texte et doc.ChampsDeFormulaire as shown above to extract content from a PDF in C#.