PDF став одним із найпоширеніших форматів документів у багатьох галузях. У різних випадках він використовується для створення рахунків-фактур, де дані представлені в табличній формі. У таких випадках може знадобитися проаналізувати PDF-файл, щоб прочитати дані з таблиць програмним шляхом. Щоб досягти цього, у статті розповідається про те, як видобувати дані з PDF-таблиць за допомогою C#.
- Бібліотека C# для вилучення таблиць 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.
- Якщо таблиця знаходиться в регіоні, виконайте наступні дії.
- Перегляньте колекцію рядків у AbsorbedTable.RowList.
- Для кожного AbsorbedRow у колекції виконайте ітерацію по колекції комірок у AbsorbedRow.CellList.
- Нарешті, прокрутіть колекцію TextFragments кожної AbsorbedCell і надрукуйте текст.
У наведеному нижче прикладі коду показано, як витягнути таблицю з певної області сторінки 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 і видобувати її дані.