Les fichiers PDF sont un format standard pour l’échange de documents sur Internet. Les documents tels que les factures et les guides de produits sont généralement partagés sous forme de fichiers PDF. Il peut y avoir des situations où vous avez plusieurs factures contenant des données tabulaires que vous devez extraire et traiter davantage. Il sera plus efficace d’extraire ces données par programmation. À cette fin, cet article vous apprendra comment extraire des données de tableaux PDF à l’aide de C++.

API C++ pour extraire des données de tableaux dans des fichiers PDF

Aspose.PDF for C++ est une bibliothèque C++ qui vous permet de créer, lire et mettre à jour des fichiers PDF. De plus, l’API prend en charge l’extraction de données à partir de tableaux dans des fichiers PDF. Vous pouvez soit installer l’API via NuGet ou la télécharger directement à partir de la section downloads.

PM> Install-Package Aspose.PDF.Cpp

Extraire des données de tableaux PDF à l’aide de C++

Voici les étapes pour extraire les données des tableaux PDF.

L’exemple de code suivant montre comment extraire des données de tableaux PDF à l’aide de C++.

// Charger le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Parcourir les pages du document
for (auto page : pdfDocument->get_Pages())
{
	// Créer une instance de la classe TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Itérer dans les tables
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Itérer dans les lignes
		for (auto row : table->get_RowList())
		{
			// Itérer dans les cellules
			for (auto cell : row->get_CellList())
			{
				// Itérer à travers les fragments de texte
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Parcourir les segments de texte
					for (auto seg : fragment->get_Segments())
					{
						// Obtenir le texte
						string = String::Concat(string, seg->get_Text());
					}

					// Imprimer le texte
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Extraire des données d’un tableau dans une zone spécifique d’une page PDF

Afin d’extraire des données d’un tableau dans une zone spécifique d’une page PDF, veuillez suivre les étapes ci-dessous.

L’exemple de code suivant montre comment extraire des données d’un tableau dans une zone spécifique d’une page PDF à l’aide de C++.

// Charger le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Obtenir la première page du document
auto page = pdfDocument->get_Pages()->idx_get(1);

// Parcourir les annotations sur la page
for (auto annotation : page->get_Annotations())
{
	// Vérifier le type d'annotation
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Créer une instance de la classe TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Itérer dans les tables
		for (auto table : absorber->get_TableList())
		{
			// Vérifiez si la table est dans la région
			if ((squareAnnotation->get_Rect()->get_LLX() < table->get_Rectangle()->get_LLX()) &&
				(squareAnnotation->get_Rect()->get_LLY() < table->get_Rectangle()->get_LLY()) &&
				(squareAnnotation->get_Rect()->get_URX() > table->get_Rectangle()->get_URX()) &&
				(squareAnnotation->get_Rect()->get_URY() > table->get_Rectangle()->get_URY())
				)
			{
				// Itérer dans les lignes
				for (auto row : table->get_RowList())
				{
					// Itérer dans les cellules
					for (auto cell : row->get_CellList())
					{
						// Itérer à travers les fragments de texte
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Parcourir les segments de texte
							for (auto seg : fragment->get_Segments())
							{
								// Obtenir le texte
								string = String::Concat(string, seg->get_Text());
							}

							// Imprimer le texte
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Obtenez une licence gratuite

Afin d’essayer l’API sans limitation d’évaluation, vous pouvez demander une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à extraire des données de tableaux PDF à l’aide de C++. De plus, vous avez appris à extraire des données d’un tableau dans une région spécifique de la page PDF. L’API Aspose.PDF for C++ fournit de nombreuses fonctionnalités supplémentaires pour travailler avec des fichiers PDF. Vous pouvez explorer l’API en détail en visitant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également