PDF Dateien sind ein Standardformat für den Austausch von Dokumenten über das Internet. Dokumente wie Rechnungen und Produkthandbücher werden normalerweise in Form von PDFs geteilt. Es kann Situationen geben, in denen Sie mehrere Rechnungen mit tabellarischen Daten haben, die Sie extrahieren und weiterverarbeiten müssen. Es ist effizienter, diese Daten programmgesteuert zu extrahieren. Zu diesem Zweck lernen Sie in diesem Artikel, wie Sie mit C++ Daten aus PDF-Tabellen extrahieren.

C++-API zum Extrahieren von Daten aus Tabellen in PDF Dateien

Aspose.PDF for C++ ist eine C++ Bibliothek, mit der Sie PDF Dateien erstellen, lesen und aktualisieren können. Darüber hinaus unterstützt die API das Extrahieren von Daten aus Tabellen in PDF Dateien. Sie können die API entweder über NuGet installieren oder direkt aus dem Abschnitt downloads herunterladen.

PM> Install-Package Aspose.PDF.Cpp

Extrahieren Sie Daten aus PDF-Tabellen mit C++

Im Folgenden sind die Schritte zum Extrahieren von Daten aus PDF-Tabellen aufgeführt.

Der folgende Beispielcode zeigt, wie Daten aus PDF-Tabellen mit C++ extrahiert werden.

// Laden Sie das PDF Dokument
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Durchlaufen Sie die Seiten des Dokuments
for (auto page : pdfDocument->get_Pages())
{
	// Erstellen Sie eine Instanz der TableAbsorber Klasse
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Iterieren Sie durch die Tabellen
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Iteriere durch die Zeilen
		for (auto row : table->get_RowList())
		{
			// Iteriere durch die Zellen
			for (auto cell : row->get_CellList())
			{
				// Iteriere durch die Textfragmente
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Iterieren Sie durch die Textsegmente
					for (auto seg : fragment->get_Segments())
					{
						// Holen Sie sich den Text
						string = String::Concat(string, seg->get_Text());
					}

					// Drucken Sie den Text aus
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Extrahieren Sie Daten aus einer Tabelle in einem bestimmten Bereich einer PDF-Seite

Um Daten aus einer Tabelle in einem bestimmten Bereich einer PDF-Seite zu extrahieren, befolgen Sie bitte die unten angegebenen Schritte.

Der folgende Beispielcode zeigt, wie Daten aus einer Tabelle in einem bestimmten Bereich einer PDF-Seite mit C++ extrahiert werden.

// Laden Sie das PDF Dokument
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Holen Sie sich die erste Seite des Dokuments
auto page = pdfDocument->get_Pages()->idx_get(1);

// Durchlaufen Sie die Anmerkungen auf der Seite
for (auto annotation : page->get_Annotations())
{
	// Überprüfen Sie den Anmerkungstyp
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Erstellen Sie eine Instanz der TableAbsorber Klasse
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Iterieren Sie durch die Tabellen
		for (auto table : absorber->get_TableList())
		{
			// Überprüfen Sie, ob sich die Tabelle in der Region befindet
			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())
				)
			{
				// Iteriere durch die Zeilen
				for (auto row : table->get_RowList())
				{
					// Iteriere durch die Zellen
					for (auto cell : row->get_CellList())
					{
						// Iteriere durch die Textfragmente
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Iterieren Sie durch die Textsegmente
							for (auto seg : fragment->get_Segments())
							{
								// Holen Sie sich den Text
								string = String::Concat(string, seg->get_Text());
							}

							// Drucken Sie den Text aus
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Holen Sie sich eine kostenlose Lizenz

Um die API ohne Evaluierungseinschränkungen zu testen, können Sie eine kostenlose temporäre Lizenz anfordern.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mit C++ Daten aus PDF-Tabellen extrahieren. Außerdem haben Sie gelernt, wie Sie Daten aus einer Tabelle in einem bestimmten Bereich der PDF-Seite extrahieren. Aspose.PDF for C++ API bietet viele zusätzliche Funktionen für die Arbeit mit PDF Dateien. Sie können die API im Detail erkunden, indem Sie die offizielle Dokumentation besuchen. Bei Fragen können Sie uns gerne in unserem kostenlosen Support-Forum erreichen.

Siehe auch