Розпакуйте таблиці PDF

PDF став одним із найпоширеніших форматів документів у багатьох галузях. У різних випадках він використовується для створення рахунків-фактур, де дані представлені в табличній формі. У таких випадках може знадобитися проаналізувати PDF-файл, щоб прочитати дані з таблиць програмним шляхом. Щоб досягти цього, у статті розповідається про те, як видобувати дані з PDF-таблиць за допомогою C#.

Бібліотека C# для вилучення таблиць із PDF

Щоб отримати дані з таблиць у файлах PDF, ми будемо використовувати Aspose.PDF for .NET. Це потужна бібліотека, яка надає широкий спектр функцій роботи з PDF-файлами. Ви можете завантажити бібліотеку або встановити її за допомогою NuGet.

PM> Install-Package Aspose.PDF

Вилучення даних із PDF-таблиць у C#

Нижче наведено кроки для отримання даних із таблиць у PDF за допомогою C#.

  • Завантажте PDF-документ за допомогою класу Document.
  • Переглядайте сторінки в PDF за допомогою колекції Document.Pages.
  • У кожній ітерації ініціалізуйте об’єкт TableAbsorber і відвідайте вибрану сторінку за допомогою методу TableAbsorber.Visit(Page).
  • У вкладеному циклі перегляньте список таблиць у колекції TableAbsorber.TableList.
  • Для кожного AbsorbedTable у колекції перегляньте колекцію рядків у AbsorbedTable.RowList.
  • Для кожного AbsorbedRow у колекції виконайте ітерацію по колекції комірок у AbsorbedRow.CellList.
  • Нарешті, прокрутіть колекцію TextFragments кожної AbsorbedCell і надрукуйте текст.

У наведеному нижче прикладі коду показано, як отримати текст із таблиці PDF у C#.

// Завантажити вихідний документ PDF
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Переглядайте сторінки                      
foreach (var page in pdfDocument.Pages)
{
	// Створіть таблицю-абсорбер і відвідайте сторінку
	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
	absorber.Visit(page);
	
	// Перегляньте кожну поглинену таблицю 
	foreach (AbsorbedTable table in absorber.TableList)
	{
		Console.WriteLine("Table");
		
		// Прокрутіть кожен рядок таблиці
		foreach (AbsorbedRow row in table.RowList)
		{
			// Прокрутіть кожну клітинку в рядку
			foreach (AbsorbedCell cell in row.CellList)
			{       
				// Перегляньте фрагменти тексту
				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();
		}
	}
}

Витягти таблицю з певної області PDF

Нижче наведено кроки, щоб витягти таблицю з певної частини сторінки в PDF за допомогою C#.

  • Завантажте PDF-документ за допомогою класу Document.
  • Виберіть потрібну Сторінку з колекції Документ.Сторінки.
  • Витягніть квадратну анотацію сторінки.
  • Ініціалізуйте об’єкт TableAbsorber і перейдіть на сторінку за допомогою методу TableAbsorber.Visit(Page).
  • У вкладеному циклі перегляньте список таблиць у колекції TableAbsorber.TableList.
  • Якщо таблиця знаходиться в регіоні, виконайте наступні дії.

У наведеному нижче прикладі коду показано, як витягнути таблицю з певної області сторінки PDF.

// Завантажити вихідний документ PDF
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 

// Виберіть сторінку та витягніть її квадратну анотацію
var page = pdfDocument.Pages[1];
var squareAnnotation =
	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
	as Annotations.SquareAnnotation;

// Створіть таблицю абсорбер і відвідайте сторінку
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);

// Перегляньте кожну поглинену таблицю в списку 
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)
	{
		// Прокрутіть кожен рядок таблиці
		foreach (AbsorbedRow row in table.RowList)
		{
			// Прокрутіть кожну клітинку в рядку
			foreach (AbsorbedCell cell in row.CellList)
			{
				// Перегляньте фрагменти тексту та виведіть текст
				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();
		}
	}
}

Безкоштовна бібліотека C# PDF для вилучення таблиць

Ви можете отримати безкоштовну тимчасову ліцензію і витягувати дані з таблиць у файли PDF без будь-яких обмежень.

Ознайомтеся з бібліотекою C# PDF

Ви можете дізнатися більше про бібліотеку PDF C# за допомогою документації. Також ви можете опублікувати свої запити на нашому форумі.

Висновок

У цій статті ви дізналися, як видобувати дані з таблиць у PDF за допомогою C#. Крім того, ви бачили, як витягти таблицю з певної області сторінки в PDF. Покрокове керівництво та зразок коду показали, наскільки легко обробляти таблицю PDF і видобувати її дані.

Дивись також