PDF-filer är ett standardformat för utbyte av dokument över internet. Dokument som fakturor och produktguider delas vanligtvis i form av PDF-filer. Det kan finnas situationer där du har flera fakturor som innehåller tabelldata som du behöver extrahera och bearbeta vidare. Det kommer att vara mer effektivt att extrahera denna data programmatiskt. För detta ändamål kommer den här artikeln att lära dig hur du extraherar data från PDF-tabeller med C++.

C++ API för att extrahera data från tabeller i PDF-filer

Aspose.PDF for C++ är ett C++-bibliotek som låter dig skapa, läsa och uppdatera PDF-filer. Dessutom stöder API:et extrahering av data från tabeller i PDF-filer. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet downloads.

PM> Install-Package Aspose.PDF.Cpp

Extrahera data från PDF-tabeller med C++

Följande är stegen för att extrahera data från PDF-tabeller.

Följande exempelkod visar hur man extraherar data från PDF-tabeller med C++.

// Ladda PDF-dokumentet
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Iterera genom dokumentets sidor
for (auto page : pdfDocument->get_Pages())
{
	// Skapa en instans av klassen TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Iterera genom tabellerna
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Iterera genom raderna
		for (auto row : table->get_RowList())
		{
			// Iterera genom cellerna
			for (auto cell : row->get_CellList())
			{
				// Iterera genom textfragmenten
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Iterera genom textsegmenten
					for (auto seg : fragment->get_Segments())
					{
						// Få texten
						string = String::Concat(string, seg->get_Text());
					}

					// Skriv ut texten
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Extrahera data från en tabell i ett specifikt område på en PDF-sida

För att extrahera data från en tabell i ett specifikt område på en PDF-sida, följ stegen nedan.

Följande exempelkod visar hur man extraherar data från en tabell i ett specifikt område på en PDF-sida med C++.

// Ladda PDF-dokumentet
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Hämta den första sidan av dokumentet
auto page = pdfDocument->get_Pages()->idx_get(1);

// Iterera genom kommentarerna på sidan
for (auto annotation : page->get_Annotations())
{
	// Kontrollera anteckningstypen
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Skapa en instans av klassen TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Iterera genom tabellerna
		for (auto table : absorber->get_TableList())
		{
			// Kontrollera om tabellen är i regionen
			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())
				)
			{
				// Iterera genom raderna
				for (auto row : table->get_RowList())
				{
					// Iterera genom cellerna
					for (auto cell : row->get_CellList())
					{
						// Iterera genom textfragmenten
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Iterera genom textsegmenten
							for (auto seg : fragment->get_Segments())
							{
								// Få texten
								string = String::Concat(string, seg->get_Text());
							}

							// Skriv ut texten
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Skaffa en gratis licens

För att prova API:et utan utvärderingsbegränsningar kan du begära en gratis tillfällig licens.

Slutsats

I den här artikeln har du lärt dig hur du extraherar data från PDF-tabeller med C++. Dessutom har du lärt dig hur du extraherar data från en tabell i en specifik region på PDF-sidan. Aspose.PDF för C++ API ger många ytterligare funktioner för att arbeta med PDF-filer. Du kan utforska API:et i detalj genom att besöka den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på vårt gratis supportforum.

Se även