Extrair tabelas PDF

PDF tornou-se um dos formatos de documento mais usados em vários campos. Em vários casos, é usado para gerar faturas em que os dados parecem estar em forma de tabela. Nesses casos, pode ser necessário analisar o PDF para ler os dados das tabelas programaticamente. Para conseguir isso, o artigo aborda como extrair dados de tabelas PDF usando C#.

API C# para extrair tabelas de PDF

Para extrair os dados das tabelas em arquivos PDF, usaremos Aspose.PDF for .NET. É uma API poderosa que fornece uma ampla gama de recursos de manipulação de PDF. Você pode baixar a API ou instalá-la usando NuGet.

PM> Install-Package Aspose.PDF

Extrair dados de tabelas PDF em C#

A seguir estão as etapas para extrair dados de tabelas em um PDF usando C#.

O exemplo de código a seguir mostra como extrair texto da tabela PDF em C#.

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

// Percorra as páginas                      
foreach (var page in pdfDocument.Pages)
{
	// Crie um absorvente de mesa e visite a página
	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
	absorber.Visit(page);
	
	// Faça um loop em cada tabela absorvida 
	foreach (AbsorbedTable table in absorber.TableList)
	{
		Console.WriteLine("Table");
		
		// Percorrer cada linha na tabela
		foreach (AbsorbedRow row in table.RowList)
		{
			// Percorrer cada célula na linha
			foreach (AbsorbedCell cell in row.CellList)
			{       
				// Faça um loop pelos 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();
		}
	}
}

Extrair tabela de uma área específica da página

A seguir estão as etapas para extrair uma tabela de uma parte específica da página em um PDF usando C#.

O exemplo de código a seguir mostra como extrair a tabela de uma região específica da página PDF.

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

// Selecione a página e extraia sua anotação quadrada
var page = pdfDocument.Pages[1];
var squareAnnotation =
	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
	as Annotations.SquareAnnotation;

// Crie absorvente de mesa e visite a página
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);

// Percorra cada tabela absorvida na 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)
	{
		// Percorrer cada linha da tabela
		foreach (AbsorbedRow row in table.RowList)
		{
			// Percorrer cada célula na linha
			foreach (AbsorbedCell cell in row.CellList)
			{
				// Percorra os fragmentos de texto e imprima o 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();
		}
	}
}

Obtenha uma licença gratuita

Você pode usar o Aspose.PDF para .NET sem limitações de avaliação usando uma licença temporária.

Conclusão

Neste artigo, você aprendeu como extrair dados de tabelas em um PDF usando C#. Além disso, você viu como extrair uma tabela de uma região específica da página em PDF. Você pode explorar mais sobre a API de PDF C# usando a documentação. Além disso, você pode postar suas dúvidas em nosso fórum.

Veja também