Extraer tablas PDF

PDF se ha convertido en uno de los formatos de documentos más utilizados en multitud de campos. En varios casos, se utiliza para generar facturas donde los datos parecen estar en forma tabular. En tales casos, es posible que deba analizar el PDF para leer los datos de las tablas mediante programación. Para lograr esto, el artículo cubre cómo extraer datos de tablas PDF usando C#.

API de C# para extraer tablas de PDF

Para extraer datos de las tablas en archivos PDF, utilizaremos Aspose.PDF for .NET. Es una potente API que proporciona una amplia gama de funciones de manipulación de PDF. Puede descargar la API o instalarla mediante NuGet.

PM> Install-Package Aspose.PDF

Extraer datos de tablas PDF en C#

Los siguientes son los pasos para extraer datos de tablas en un PDF usando C#.

El siguiente ejemplo de código muestra cómo extraer texto de una tabla PDF en C#.

// Cargar documento PDF de origen
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Bucle a través de las páginas                      
foreach (var page in pdfDocument.Pages)
{
	// Cree una tabla absorbente y visite la página
	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
	absorber.Visit(page);
	
	// Bucle a través de cada tabla absorbida 
	foreach (AbsorbedTable table in absorber.TableList)
	{
		Console.WriteLine("Table");
		
		// Recorra cada fila de la tabla
		foreach (AbsorbedRow row in table.RowList)
		{
			// Bucle a través de cada celda en la fila
			foreach (AbsorbedCell cell in row.CellList)
			{       
				// Bucle a través de los fragmentos de texto
				foreach (TextFragment fragment in cell.TextFragments)
				{
					var sb = new StringBuilder();
					foreach (TextSegment seg in fragment.Segments)
						sb.Append(seg.Text);
					Console.Write($"{sb.ToString()}|");
				}                           
			}
			Console.WriteLine();
		}
	}
}

Extraer tabla de un área específica de la página

Los siguientes son los pasos para extraer una tabla de una parte específica de la página en un PDF usando C#.

El siguiente ejemplo de código muestra cómo extraer una tabla de una región específica de la página PDF.

// Cargar documento PDF de origen
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Seleccione la página y extraiga su anotación cuadrada.
var page = pdfDocument.Pages[1];
var squareAnnotation =
	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
	as Annotations.SquareAnnotation;

// Crear mesa absorbente y visitar la página
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);

// Recorra cada tabla absorbida en la lista 
foreach (AbsorbedTable table in absorber.TableList)
{
	var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) &&
	(squareAnnotation.Rect.LLY < table.Rectangle.LLY) &&
	(squareAnnotation.Rect.URX > table.Rectangle.URX) &&
	(squareAnnotation.Rect.URY > table.Rectangle.URY);

	if (isInRegion)
	{
		// Bucle a través de cada fila de la tabla
		foreach (AbsorbedRow row in table.RowList)
		{
			// Bucle a través de cada celda en la fila
			foreach (AbsorbedCell cell in row.CellList)
			{
				// Recorra los fragmentos de texto e imprima el texto
				foreach (TextFragment fragment in cell.TextFragments)
				{
					var sb = new StringBuilder();
					foreach (TextSegment seg in fragment.Segments)
					{
						sb.Append(seg.Text);
					}
					var text = sb.ToString();
					Console.Write($"{text}|");
				}
			}
			Console.WriteLine();
		}
	}
}

Obtenga una licencia gratis

Puede usar Aspose.PDF for .NET sin limitaciones de evaluación usando una licencia temporal.

Conclusión

En este artículo, ha aprendido a extraer datos de tablas en un PDF usando C#. Además, ha visto cómo extraer una tabla de una región específica de la página en PDF. Puede explorar más sobre la API de PDF de C# utilizando la documentación. Además, puede publicar sus consultas en nuestro foro.

Ver también