Wyodrębnij tabele PDF

PDF stał się jednym z najczęściej używanych formatów dokumentów w wielu dziedzinach. W różnych przypadkach służy do generowania faktur, w których dane wydają się być w formie tabelarycznej. W takich przypadkach może być konieczne przeanalizowanie pliku PDF w celu programowego odczytania danych z tabel. Aby to osiągnąć, w artykule omówiono sposób wyodrębniania danych z tabel PDF przy użyciu języka C#.

C# API do wyodrębniania tabel z PDF

Do wydobycia danych z tabel w plikach PDF wykorzystamy Aspose.PDF for .NET. Jest to potężny interfejs API, który zapewnia szeroki zakres funkcji manipulacji plikami PDF. Możesz pobrać interfejs API lub zainstalować go za pomocą NuGet.

PM> Install-Package Aspose.PDF

Wyodrębnij dane z tabel PDF w C#

Poniżej przedstawiono kroki, aby wyodrębnić dane z tabel w pliku PDF przy użyciu języka C#.

Poniższy przykładowy kod pokazuje, jak wyodrębnić tekst z tabeli PDF w języku C#.

// Załaduj źródłowy dokument PDF
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Przewijaj strony                      
foreach (var page in pdfDocument.Pages)
{
	// Stwórz pochłaniacz stołu i odwiedź stronę
	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
	absorber.Visit(page);
	
	// Przeprowadź pętlę przez każdą wchłoniętą tabelę 
	foreach (AbsorbedTable table in absorber.TableList)
	{
		Console.WriteLine("Table");
		
		// Przejdź przez każdy wiersz w tabeli
		foreach (AbsorbedRow row in table.RowList)
		{
			// Przejdź przez każdą komórkę w rzędzie
			foreach (AbsorbedCell cell in row.CellList)
			{       
				// Przejrzyj fragmenty tekstu w pętli
				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();
		}
	}
}

Wyodrębnij tabelę z określonego obszaru strony

Poniżej przedstawiono kroki, aby wyodrębnić tabelę z określonej części strony w pliku PDF przy użyciu języka C#.

Poniższy przykładowy kod pokazuje, jak wyodrębnić tabelę z określonego regionu strony PDF.

// Załaduj źródłowy dokument PDF
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Wybierz stronę i wyodrębnij jej kwadratową adnotację
var page = pdfDocument.Pages[1];
var squareAnnotation =
	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
	as Annotations.SquareAnnotation;

// Stwórz table absorber i odwiedź stronę
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);

// Przejdź przez każdą wchłoniętą tabelę na liście 
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)
	{
		// Przejdź przez każdy wiersz tabeli
		foreach (AbsorbedRow row in table.RowList)
		{
			// Przejdź przez każdą komórkę w rzędzie
			foreach (AbsorbedCell cell in row.CellList)
			{
				// Przejrzyj fragmenty tekstu i wydrukuj tekst
				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();
		}
	}
}

Uzyskaj bezpłatną licencję

Możesz używać Aspose.PDF for .NET bez ograniczeń ewaluacyjnych przy użyciu tymczasowej licencji.

Wniosek

W tym artykule nauczyłeś się, jak wyodrębniać dane z tabel w pliku PDF przy użyciu języka C#. Ponadto widziałeś, jak wyodrębnić tabelę z określonego obszaru strony w formacie PDF. Więcej informacji na temat C# PDF API można znaleźć w dokumentacji. Możesz również zamieścić swoje pytania na naszym forum.

Zobacz też