Pliki PDF to standardowy format wymiany dokumentów przez Internet. Dokumenty, takie jak faktury i przewodniki po produktach, są zwykle udostępniane w formie plików PDF. Mogą wystąpić sytuacje, w których masz wiele faktur zawierających dane tabelaryczne, które musisz wyodrębnić i przetworzyć dalej. Programowe wyodrębnienie tych danych będzie bardziej wydajne. W tym celu w tym artykule dowiesz się, jak wyodrębnić dane z tabel PDF za pomocą C++.

C++ API do wyodrębniania danych z tabel w plikach PDF

Aspose.PDF for C++ to biblioteka C++, która umożliwia tworzenie, odczytywanie i aktualizowanie plików PDF. Ponadto API obsługuje wyodrębnianie danych z tabel w plikach PDF. Możesz zainstalować API przez NuGet lub pobrać bezpośrednio z sekcji downloads.

PM> Install-Package Aspose.PDF.Cpp

Wyodrębnij dane z tabel PDF za pomocą C++

Poniżej przedstawiono kroki, aby wyodrębnić dane z tabel PDF.

Poniższy przykładowy kod pokazuje, jak wyodrębnić dane z tabel PDF przy użyciu języka C++.

// Załaduj dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Iteruj przez strony dokumentu
for (auto page : pdfDocument->get_Pages())
{
	// Utwórz instancję klasy TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Iteruj po tabelach
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Iteruj przez wiersze
		for (auto row : table->get_RowList())
		{
			// Iteruj przez komórki
			for (auto cell : row->get_CellList())
			{
				// Iteruj przez fragmenty tekstu
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Iteruj przez segmenty tekstu
					for (auto seg : fragment->get_Segments())
					{
						// Pobierz tekst
						string = String::Concat(string, seg->get_Text());
					}

					// Wydrukuj tekst
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Wyodrębnij dane z tabeli w określonym obszarze strony PDF

Aby wyodrębnić dane z tabeli w określonym obszarze strony PDF, wykonaj poniższe czynności.

Poniższy przykładowy kod ilustruje sposób wyodrębniania danych z tabeli w określonym obszarze strony PDF przy użyciu języka C++.

// Załaduj dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Pobierz pierwszą stronę dokumentu
auto page = pdfDocument->get_Pages()->idx_get(1);

// Przejrzyj adnotacje na stronie
for (auto annotation : page->get_Annotations())
{
	// Sprawdź typ adnotacji
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Utwórz instancję klasy TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Iteruj po tabelach
		for (auto table : absorber->get_TableList())
		{
			// Sprawdź, czy tabela znajduje się w regionie
			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())
				)
			{
				// Iteruj przez wiersze
				for (auto row : table->get_RowList())
				{
					// Iteruj przez komórki
					for (auto cell : row->get_CellList())
					{
						// Iteruj przez fragmenty tekstu
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Iteruj przez segmenty tekstu
							for (auto seg : fragment->get_Segments())
							{
								// Pobierz tekst
								string = String::Concat(string, seg->get_Text());
							}

							// Wydrukuj tekst
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Uzyskaj bezpłatną licencję

Aby wypróbować interfejs API bez ograniczeń ewaluacyjnych, możesz poprosić o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się, jak wyodrębniać dane z tabel PDF za pomocą C++. Ponadto nauczyłeś się, jak wyodrębniać dane z tabeli w określonym obszarze strony PDF. Aspose.PDF for C++ API zapewnia wiele dodatkowych funkcji do pracy z plikami PDF. Możesz szczegółowo zapoznać się z interfejsem API, odwiedzając oficjalną dokumentację. W przypadku jakichkolwiek pytań prosimy o kontakt z nami na naszym bezpłatnym forum pomocy technicznej.

Zobacz też