Los archivos PDF son un formato estándar para intercambiar documentos a través de Internet. Documentos como facturas y guías de productos se suelen compartir en formato PDF. Puede haber situaciones en las que tenga varias facturas que contengan datos tabulares que necesite extraer y procesar más. Será más eficiente extraer estos datos mediante programación. Con ese fin, este artículo le enseñará cómo extraer datos de tablas PDF usando C++.

API de C++ para extraer datos de tablas en archivos PDF

Aspose.PDF for C++ es una biblioteca de C++ que le permite crear, leer y actualizar archivos PDF. Además, la API admite la extracción de datos de tablas en archivos PDF. Puede instalar la API a través de NuGet o descargarla directamente desde la sección descargas.

PM> Install-Package Aspose.PDF.Cpp

Extraer datos de tablas PDF usando C++

Los siguientes son los pasos para extraer datos de tablas PDF.

El siguiente código de ejemplo muestra cómo extraer datos de tablas PDF usando C++.

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

// Iterar a través de las páginas del documento.
for (auto page : pdfDocument->get_Pages())
{
	// Crear una instancia de la clase TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Iterar a través de las tablas
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Iterar a través de las filas
		for (auto row : table->get_RowList())
		{
			// Iterar a través de las celdas
			for (auto cell : row->get_CellList())
			{
				// Iterar a través de los fragmentos de texto.
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Iterar a través de los segmentos de texto
					for (auto seg : fragment->get_Segments())
					{
						// Obtener el texto
						string = String::Concat(string, seg->get_Text());
					}

					// Imprime el texto
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Extraer datos de una tabla en un área específica de una página PDF

Para extraer datos de una tabla en un área específica de una página PDF, siga los pasos que se indican a continuación.

El siguiente código de ejemplo demuestra cómo extraer datos de una tabla en un área específica de una página PDF usando C++.

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

// Obtener la primera página del documento
auto page = pdfDocument->get_Pages()->idx_get(1);

// Iterar a través de las anotaciones en la página
for (auto annotation : page->get_Annotations())
{
	// Comprobar el tipo de anotación
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// Crear una instancia de la clase TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Iterar a través de las tablas
		for (auto table : absorber->get_TableList())
		{
			// Comprobar si la tabla está en la región
			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())
				)
			{
				// Iterar a través de las filas
				for (auto row : table->get_RowList())
				{
					// Iterar a través de las celdas
					for (auto cell : row->get_CellList())
					{
						// Iterar a través de los fragmentos de texto.
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Iterar a través de los segmentos de texto
							for (auto seg : fragment->get_Segments())
							{
								// Obtener el texto
								string = String::Concat(string, seg->get_Text());
							}

							// Imprime el texto
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Obtenga una licencia gratis

Para probar la API sin limitaciones de evaluación, puede solicitar una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a extraer datos de tablas PDF usando C++. Además, ha aprendido a extraer datos de una tabla en una región específica de la página PDF. Aspose.PDF for C++ proporciona muchas funciones adicionales para trabajar con archivos PDF. Puede explorar la API en detalle visitando la documentación oficial. Si tiene alguna pregunta, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.

Ver también