I file PDF sono un formato standard per lo scambio di documenti su Internet. Documenti come fatture e guide ai prodotti sono generalmente condivisi sotto forma di PDF. Potrebbero esserci situazioni in cui hai più fatture contenenti dati tabulari che devi estrarre ed elaborare ulteriormente. Sarà più efficiente estrarre questi dati a livello di codice. A tal fine, questo articolo ti insegnerà come estrarre i dati dalle tabelle PDF utilizzando C++.

API C++ per estrarre dati da tabelle in file PDF

Aspose.PDF for C++ è una libreria C++ che consente di creare, leggere e aggiornare file PDF. Inoltre, l’API supporta l’estrazione di dati dalle tabelle nei file PDF. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione download.

PM> Install-Package Aspose.PDF.Cpp

Estrai dati da tabelle PDF usando C++

Di seguito sono riportati i passaggi per estrarre i dati dalle tabelle PDF.

Il codice di esempio seguente mostra come estrarre i dati dalle tabelle PDF usando C++.

// Carica il documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Scorri le pagine del documento
for (auto page : pdfDocument->get_Pages())
{
	// Crea un'istanza della classe TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Scorri le tabelle
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Scorri le righe
		for (auto row : table->get_RowList())
		{
			// Iterare attraverso le celle
			for (auto cell : row->get_CellList())
			{
				// Scorri i frammenti di testo
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Scorri i segmenti di testo
					for (auto seg : fragment->get_Segments())
					{
						// Ottieni il testo
						string = String::Concat(string, seg->get_Text());
					}

					// Stampa il testo
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Estrai dati da una tabella in un’area specifica di una pagina PDF

Per estrarre i dati da una tabella in un’area specifica di una pagina PDF, seguire i passaggi indicati di seguito.

Il codice di esempio seguente mostra come estrarre i dati da una tabella in un’area specifica di una pagina PDF usando C++.

// Carica il documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Ottieni la prima pagina del documento
auto page = pdfDocument->get_Pages()->idx_get(1);

// Scorri le annotazioni sulla pagina
for (auto annotation : page->get_Annotations())
{
	// Controlla il tipo di annotazione
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Crea un'istanza della classe TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Scorri le tabelle
		for (auto table : absorber->get_TableList())
		{
			// Controlla se il tavolo è nella regione
			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())
				)
			{
				// Scorri le righe
				for (auto row : table->get_RowList())
				{
					// Iterare attraverso le celle
					for (auto cell : row->get_CellList())
					{
						// Scorri i frammenti di testo
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Scorri i segmenti di testo
							for (auto seg : fragment->get_Segments())
							{
								// Ottieni il testo
								string = String::Concat(string, seg->get_Text());
							}

							// Stampa il testo
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Ottieni una licenza gratuita

Per provare l’API senza limitazioni di valutazione, puoi richiedere una licenza temporanea gratuita.

Conclusione

In questo articolo, hai imparato come estrarre i dati dalle tabelle PDF usando C++. Inoltre, hai imparato come estrarre i dati da una tabella in un’area specifica della pagina PDF. L’API Aspose.PDF per C++ offre molte funzionalità aggiuntive per lavorare con i file PDF. Puoi esplorare l’API in dettaglio visitando la documentazione ufficiale. In caso di domande, non esitare a contattarci sul nostro forum di supporto gratuito.

Guarda anche