Soubory PDF jsou standardním formátem pro výměnu dokumentů přes internet. Dokumenty, jako jsou faktury a příručky k produktům, jsou obvykle sdíleny ve formě PDF. Mohou nastat situace, kdy máte více faktur obsahujících tabulková data, která potřebujete extrahovat a dále zpracovávat. Bude efektivnější extrahovat tato data programově. Za tímto účelem vás tento článek naučí, jak extrahovat data z tabulek PDF pomocí C++.

C++ API pro extrahování dat z tabulek v souborech PDF

Aspose.PDF for C++ je knihovna C++, která umožňuje vytvářet, číst a aktualizovat soubory PDF. Kromě toho API podporuje extrahování dat z tabulek v souborech PDF. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce stahování.

PM> Install-Package Aspose.PDF.Cpp

Extrahujte data z tabulek PDF pomocí C++

Následují kroky k extrahování dat z tabulek PDF.

Následující ukázkový kód ukazuje, jak extrahovat data z tabulek PDF pomocí C++.

// Načtěte dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Procházejte stránky dokumentu
for (auto page : pdfDocument->get_Pages())
{
	// Vytvořte instanci třídy TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Iterujte tabulky
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Procházejte řádky
		for (auto row : table->get_RowList())
		{
			// Iterujte přes buňky
			for (auto cell : row->get_CellList())
			{
				// Iterujte fragmenty textu
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Procházejte textovými segmenty
					for (auto seg : fragment->get_Segments())
					{
						// Získejte text
						string = String::Concat(string, seg->get_Text());
					}

					// Vytiskněte text
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Extrahujte data z tabulky v určité oblasti stránky PDF

Chcete-li extrahovat data z tabulky v určité oblasti stránky PDF, postupujte podle níže uvedených kroků.

Následující ukázkový kód ukazuje, jak extrahovat data z tabulky v určité oblasti stránky PDF pomocí C++.

// Načtěte dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Získejte první stránku dokumentu
auto page = pdfDocument->get_Pages()->idx_get(1);

// Procházejte poznámky na stránce
for (auto annotation : page->get_Annotations())
{
	// Zkontrolujte typ anotace
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Vytvořte instanci třídy TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Iterujte tabulky
		for (auto table : absorber->get_TableList())
		{
			// Zkontrolujte, zda je stůl v regionu
			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())
				)
			{
				// Procházejte řádky
				for (auto row : table->get_RowList())
				{
					// Iterujte přes buňky
					for (auto cell : row->get_CellList())
					{
						// Iterujte fragmenty textu
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Procházejte textovými segmenty
							for (auto seg : fragment->get_Segments())
							{
								// Získejte text
								string = String::Concat(string, seg->get_Text());
							}

							// Vytiskněte text
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Získejte bezplatnou licenci

Abyste mohli API vyzkoušet bez omezení hodnocení, můžete požádat o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili extrahovat data z tabulek PDF pomocí C++. Navíc jste se naučili, jak extrahovat data z tabulky v určité oblasti stránky PDF. Aspose.PDF for C++ API poskytuje mnoho dalších funkcí pro práci se soubory PDF. Rozhraní API můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také