PDF est devenu l’un des formats de document les plus largement utilisés dans une multitude de domaines. Dans divers cas, il est utilisé pour générer des factures où les données semblent être sous forme de tableau. Dans de tels cas, vous devrez peut-être analyser le PDF pour lire les données des tables par programmation. Pour ce faire, l’article explique comment extraire des données de tableaux PDF à l’aide de C#.
- API C# pour extraire des tableaux PDF
- Extraire des données de tableaux PDF en C#
- Extraire le tableau d’une zone spécifique de la page
API C# pour extraire des tableaux d’un PDF
Afin d’extraire les données des tableaux dans les fichiers PDF, nous utiliserons Aspose.PDF for .NET. Il s’agit d’une API puissante qui fournit un large éventail de fonctionnalités de manipulation de PDF. Vous pouvez soit télécharger l’API ou l’installer à l’aide de NuGet.
PM> Install-Package Aspose.PDF
Extraire des données de tableaux PDF en C#
Voici les étapes à suivre pour extraire des données de tables dans un PDF à l’aide de C#.
- Chargez le document PDF à l’aide de la classe Document.
- Parcourez les pages du PDF à l’aide de la collection Document.Pages.
- À chaque itération, initialisez l’objet TableAbsorber et visitez la page sélectionnée à l’aide de la méthode TableAbsorber.Visit(Page).
- Dans une boucle imbriquée, parcourez la liste des tables de la collection TableAbsorber.TableList.
- Pour chaque AbsorbedTable de la collection, parcourez la collection de lignes dans AbsorbedTable.RowList.
- Pour chaque AbsorbedRow de la collection, parcourez la collection de cellules dans AbsorbedRow.CellList.
- Enfin, parcourez la collection TextFragments de chaque AbsorbedCell et imprimez le texte.
L’exemple de code suivant montre comment extraire du texte d’un tableau PDF en C#.
// Charger le document PDF source
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Boucle à travers les pages
foreach (var page in pdfDocument.Pages)
{
// Créez un absorbeur de table et visitez la page
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Boucle à travers chaque table absorbée
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// Boucle sur chaque ligne du tableau
foreach (AbsorbedRow row in table.RowList)
{
// Boucle à travers chaque cellule de la ligne
foreach (AbsorbedCell cell in row.CellList)
{
// Boucle à travers les fragments de texte
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
sb.Append(seg.Text);
Console.Write($"{sb.ToString()}|");
}
}
Console.WriteLine();
}
}
}
Extraire le tableau d’une zone spécifique de la page
Voici les étapes pour extraire un tableau d’une partie spécifique de la page dans un PDF à l’aide de C#.
- Chargez le document PDF à l’aide de la classe Document.
- Sélectionnez la Page souhaitée dans la collection Document.Pages.
- Extrayez l’annotation carrée de la page.
- Initialisez l’objet TableAbsorber et visitez la page en utilisant la méthode TableAbsorber.Visit(Page).
- Dans une boucle imbriquée, parcourez la liste des tables de la collection TableAbsorber.TableList.
- Si la table se trouve dans la région, procédez comme suit.
- Parcourez la collection de lignes dans AbsorbedTable.RowList.
- Pour chaque AbsorbedRow de la collection, parcourez la collection de cellules dans AbsorbedRow.CellList.
- Enfin, parcourez la collection TextFragments de chaque AbsorbedCell et imprimez le texte.
L’exemple de code suivant montre comment extraire un tableau d’une région spécifique de la page PDF.
// Charger le document PDF source
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Sélectionnez la page et extrayez son annotation carrée
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// Créez un absorbeur de table et visitez la page
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Boucle à travers chaque table absorbée dans la liste
foreach (AbsorbedTable table in absorber.TableList)
{
var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) &&
(squareAnnotation.Rect.LLY < table.Rectangle.LLY) &&
(squareAnnotation.Rect.URX > table.Rectangle.URX) &&
(squareAnnotation.Rect.URY > table.Rectangle.URY);
if (isInRegion)
{
// Boucle sur chaque ligne du tableau
foreach (AbsorbedRow row in table.RowList)
{
// Boucle à travers chaque cellule de la ligne
foreach (AbsorbedCell cell in row.CellList)
{
// Parcourez les fragments de texte et imprimez le texte
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
{
sb.Append(seg.Text);
}
var text = sb.ToString();
Console.Write($"{text}|");
}
}
Console.WriteLine();
}
}
}
Obtenez une licence gratuite
Vous pouvez utiliser Aspose.PDF for .NET sans limitation d’évaluation à l’aide d’une licence temporaire.
Conclusion
Dans cet article, vous avez appris à extraire des données de tables dans un PDF à l’aide de C#. De plus, vous avez vu comment extraire un tableau d’une région spécifique de la page en PDF. Vous pouvez en savoir plus sur l’API C# PDF à l’aide de la documentation. Vous pouvez également poster vos questions sur notre forum.