Extrahera PDF-tabeller

PDF har blivit ett av de mest använda dokumentformaten inom en mängd områden. I olika fall används den för att generera fakturor där uppgifterna verkar vara i tabellform. I sådana fall kan du behöva analysera PDF-filen för att läsa data från tabellerna programmatiskt. För att uppnå detta täcker artikeln hur man extraherar data från PDF-tabeller med C#.

C# Library för att extrahera tabeller från PDF

För att extrahera data från tabellerna i PDF-filer kommer vi att använda Aspose.PDF för .NET. Det är ett kraftfullt bibliotek som tillhandahåller ett brett utbud av PDF-manipuleringsfunktioner. Du kan antingen ladda ner biblioteket eller installera det med NuGet.

PM> Install-Package Aspose.PDF

Extrahera data från PDF-tabeller i C#

Följande är stegen för att extrahera data från tabeller i en PDF med C#.

Följande kodexempel visar hur man extraherar text från PDF-tabellen i C#.

// Ladda käll-PDF-dokument
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Bläddra igenom sidorna                      
foreach (var page in pdfDocument.Pages)
{
	// Skapa en bordsabsorbent och besök sidan
	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
	absorber.Visit(page);
	
	// Gå igenom varje absorberat bord 
	foreach (AbsorbedTable table in absorber.TableList)
	{
		Console.WriteLine("Table");
		
		// Gå igenom varje rad i tabellen
		foreach (AbsorbedRow row in table.RowList)
		{
			// Gå igenom varje cell i raden
			foreach (AbsorbedCell cell in row.CellList)
			{       
				// Gå igenom textfragmenten
				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();
		}
	}
}

Extrahera tabell från ett specifikt område av PDF

Följande är stegen för att extrahera en tabell från en specifik del av sidan i en PDF med C#.

Följande kodexempel visar hur man extraherar tabeller från en specifik region på PDF-sidan.

// Ladda käll-PDF-dokument
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Välj sidan och extrahera dess fyrkantiga anteckning
var page = pdfDocument.Pages[1];
var squareAnnotation =
	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
	as Annotations.SquareAnnotation;

// Skapa bordsabsorbent och besök sidan
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);

// Gå igenom varje absorberad tabell i listan 
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)
	{
		// Gå igenom varje rad i tabellen
		foreach (AbsorbedRow row in table.RowList)
		{
			// Gå igenom varje cell i raden
			foreach (AbsorbedCell cell in row.CellList)
			{
				// Gå igenom textfragmenten och skriv ut texten
				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();
		}
	}
}

Gratis C# PDF-bibliotek för att extrahera tabeller

Du kan få en gratis tillfällig licens och extrahera data från tabeller i PDF-filer utan några begränsningar.

Utforska C# PDF-biblioteket

Du kan utforska mer om C# PDF-biblioteket med hjälp av dokumentationen. Du kan också posta dina frågor på vårt forum.

Slutsats

I den här artikeln har du lärt dig hur du extraherar data från tabeller i en PDF med C#. Dessutom har du sett hur man extraherar en tabell från en specifik del av sidan i PDF. Steg-för-steg-guiden och kodexemplet har visat hur lätt det är att bearbeta och PDF-tabellera och extrahera dess data.

Se även